Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Agregar Filas a DBGrid según Filtro Búsqueda (https://www.clubdelphi.com/foros/showthread.php?t=85310)

mantraxer21 28-02-2014 02:13:10

Agregar Filas a DBGrid según Filtro Búsqueda
 
Hola a todos !

Consulta. estoy realizando un formulario de "préstamo de libros" (biblioteca básica) y dentro de ello, tengo un control tEdit llamado "txtfiltro" que realiza una búsqueda exacta de un campo determinado en mi tibQuery (qConsultar).

Código SQL [-]
select * from libros
where
libros.isbn_lib like '%' || :xisbn || '%'
(la query es más extensa pero en resumen y muy simple es eso...)

Esta consulta me trae varios datos cómo: "Nombre Autor", "Título Libro", "Codigo ISBN", "Temática", "Ubicación del Libro".

Ahora lo que se requiere es que si la consulta arroja resultados (es decir, encuentra un Libro), esto debe mostrarse en la Grilla que tiene por nombre "grillaPrestamo" (componente dbGrid).

Cómo puedo hacer para que en la grilla me muestre los datos del libro encontrado? y además de ello, poder registrar OTRO libro, y otro más ...

Inicialmente quiero que me muestre y después poder Hacer un post, pero eso después !

Gracias.


Saludos

ecfisa 28-02-2014 04:59:02

Hola mantraxer21.
Cita:

Consulta. estoy realizando un formulario de "préstamo de libros" (biblioteca básica) y dentro de ello, tengo un control tEdit llamado "txtfiltro" que realiza una búsqueda exacta de un campo determinado en mi tibQuery (qConsultar).
Código SQL [-]
select * from libros
where
libros.isbn_lib like '%' || :xisbn || '%'

En realidad esa búsqueda no es exácta ya que trae todos los registros cuyos campos "ISBN_LIB" contengan los caracteres enviados en el parámetro ":XISBN". Es decir, eventualmente podría devolver una sola coincidencia, pero es un factor incidental.

Si deseas que la consulta realice una búsqueda exácta de un registro sería:
Código SQL [-]
SELECT * 
FROM LIBROS
WHERE LIBROS.ISBN_LIB = :XISBN

Cita:

Esta consulta me trae varios datos cómo: "Nombre Autor", "Título Libro", "Codigo ISBN", "Temática", "Ubicación del Libro".
Al usar "*" te devuelve todas las columnas de la tabla "LIBROS".

La consulta:
Código SQL [-]
SELECT * 
FROM LIBROS
WHERE LIBROS.ISBN_LIB = '%' || :XISBN || '%'
Es muy utilizada en búsquedas incrementales (no muy eficientes) la cuál podes podes implementar de este modo:

1) Un TIBQuery asociado a un TDataSource y un TDBGrid asociado al anterior.
Código:

TIBDataBase <- TIBTransaction
          | 
          + <- TIBQuery <- TDataSource <- TDBGrid

2) Agregar un TEdit con este código en su evento OnChange:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM LIBROS WHERE ISBN_LIB LIKE :XISBN';
    ParamByName('XISBN').AsString:= '%' + Edit1.Text + '%';
    Open;
  end;
end;
De ese modo a medida que vas ingresando caracteres en el Edit se va filtrando el resultado y se vé reflejado en el DBGrid. Pero no estoy seguro si satisface tu pregunta, estoy infiriendo la respuesta a partir de la consulta SQL de tu mensaje.

Saludos :)

mantraxer21 06-03-2014 22:30:04

Muchas Gracias
 
Gracias por las ayudas!


Saludos:o


La franja horaria es GMT +2. Ahora son las 21:59:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi