Ver Mensaje Individual
  #2  
Antiguo 28-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita