Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Realizar busqueda en firebird (https://www.clubdelphi.com/foros/showthread.php?t=78987)

miguelgalindo87 31-05-2012 18:59:52

Realizar busqueda en firebird
 
Saludos a todos. Estimados recurro a Uds una vez mas por lo siguiente, tengo una tabla en firebird 2.5, y quiero realizar dos tipos de busqueda: El primero por el codigo(campo clave) y el segundo es por nombre de producto.
Lo que les pido es, si tienen, algun codigo que me permita realizar estas funciones

Muchas gracias a todos
feliz dia!

ecfisa 31-05-2012 19:58:10

Hola miguel.

¿ Que componentes estás utilizando para conectarte a Firebird ?

Saludos.

maeyanes 31-05-2012 19:59:08

Hola...

Para buscar por un código haces algo como:

Código SQL [-]
select * from Tabla where Codigo = 'Valor'

Para el nombre del producto, haces algo similar:

Código SQL [-]
select * from Tabla donde Nombre = 'Valor'

Ahora, si te explicas de mejor forma, tal vez se te pueda ayudar mejor. Recuerda, mientras más detalles tu duda, mejor será la ayuda recibida...


Saludos...

miguelgalindo87 31-05-2012 22:35:15

Ok aqui te explico mas claramente (me disculpo por mis continuas novatadas)
Estoy utilizando en un DataModule mi IBDataBase, IBTable e IBTransaction
y en el formulario un IBQuery enlazado con el DataModule
estos componentes funcionan correctamente...
Ahora lo que quiero hacer es lo siguiente programar en un boton "Buscar" (o dos botones) que me de dos opciones
1)buscar por el campo clave "Codigo" y me muestre solo el registro correspondiente en una serie de DBEdits que tengo.

2)buscar por el nombre del producto, en este caso que me muestre por ejemplo todos los productos cuyos nombre comienzan con la palabra "pan"(ejemplo) en el DBGrid.

gracias por su ayuda :D

ecfisa 31-05-2012 23:23:30

Hola miguel.

Como primera medida te aconsejo que en lugar de TIBTable utilices TIBDataSet. En este artículo vas a encontrar mucha información interesante sobre los componentes IBX.

Volviendo a tu consulta, con un IBTable podrías hacer:
Código Delphi [-]
procedure TForm1.btnBuscarCodigoClick(Sender: TObject);
begin
  IBTable1.Locate('CODIGO',EditCodigo.Text,[])
end;

procedure TForm1.btnNombreClick(Sender: TObject);
begin
  IBTable1.Filtered:= False;
  IBTable1.Filter:= 'NOMBRE LIKE '+ QuotedStr(EditNombre.Text +'%');
  IBTable1.Filtered:= True;
end;

Saludos.

Cañones 31-05-2012 23:27:12

Creo que el query en el formulario está de más, debería estar en el datamodule y enlazado conun datasource. Pero va en gustos.

Yo lo que hago es esto.
- En el form creo una property string y voy recolectando todos los códigos que quiero buscar. Entonces en un tdblookupcombobox muesto los nombres y en otro los códigos. Los dos tdblookupcombobox me devuelven los códigos.
- Despues que termino de recolectar los paso como parámeto a un procedimiento en el datamodule y hago la búsqueda.

Código Delphi [-]
procedure TdmHorarios.filtrarPersonal(lasPersonas: string);
  var   elSQL: string;
  begin
  // filtro el personal para generar el reporte de  HH.EE.  

  elSQL:='AND P.IDPERSONA IN ('+lasPersonas+')';  
  // la consulta que necesito ya está cargada en el dataset y acá agrego los rengónes necesarios para filtrarla

  zroqPersonal.close;  

  zroqPersonal.SQL.Add(elSQL);
   zroqPersonal.Open;
  end;

- En un dbgrid enlazado al datasource y este enlazado al dataset se muestran los resultados de la búsqueda.


Espero te sirva.
No dudes en repreguntar.
Saludos.

miguelgalindo87 31-05-2012 23:52:24

Muchisimas gracias por sus aportes los voy a probar y luego les aviso los resultados que obtuve

feliz dia y gracias a todos :D

miguelgalindo87 01-06-2012 22:17:30

Saludos a todos una vez mas gracias por tomarse la molestia de ayudarme :)
Probe con el metodo de Eficsa para buscar por el codigo y da el resultado deseado en los TDBEdits, me muestra todo el registro correspondiente a ese codigo :D, lei el material que me recomendaste muy bueno tambien y cambie mi TIBTable por un TIBDataSe t como me recomendo cañones

Pero como siempre hay un detalle, en la busqueda por nombre no me muestra ningun registro relacionado con la busqueda en TDBGrid...simplemente la lista completa que aparece dado que no tengo el DataSet cerrado antes de buscar..

Debo cerrar/abrir al realizar la busqueda?
Debo utilizar otro DataGrid para mostrarla?

que me recomiendan?
de antemano muchas gracias
saludos a todos

cañones disculpame el abuso pero no tendras otro metodo para usuarios menos avanzados? es que ese me parecio muy experimentado para mis conocimientos

ecfisa 01-06-2012 23:00:39

Hola Miguel.

Cita:

Debo cerrar/abrir al realizar la busqueda?
Debo utilizar otro DataGrid para mostrarla?
La respuesta a la primera pregunta es sí y no necesariamente a la segunda :)

Un ejemplo con TIBDataSet:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  IBDataSet1.Close;
  IBDataSet1.SelectSQL.Text:= 'SELECT * FROM PRODUCTOS WHERE NOMBRE LIKE :BUSCADO';
  IBDataSet1.ParamByName('BUSCADO').AsString:= Edit1.Text+'%';
  IBDataSet1.Open;
end;
Tomá en cuenta que en este caso la cadena SQL que originalmente le asignaste a la propiedad SelectSQL es reemplazada por cada nueva asignación.

Saludos.

miguelgalindo87 01-06-2012 23:17:45

Ecfisa mil y un millon mas de gracias! este codigo lo hace perfectamente
lo adpate a la entrada por InputBox y queda aun mas genial!!

saludos y exitos!


La franja horaria es GMT +2. Ahora son las 20:34:03.

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