PDA

Ver la Versión Completa : Busqueda en base de datos


exequielmatias1
31-07-2013, 15:36:32
Hola, esta es mi primer consulta en este foto que siempre me ayudo muchisimo, pero esta vez no encontre solucion a mi problema je

Tengo una Base de datos en Access, conectado a un ADOQuery y a un DataSource, esta base se muestra en un DBGrid, tengo 5 Edit, un para filtrar por Pais, otro por Provincia, otro por Apellido y otro Edit por Nombre. Mi consulta es como hacer para que filtre cada edit y se muestre los resultados en el DBGrid. Ej si en Edit1 pongo Argentina muestre todos los datos por Pais>Argentina. Si en Edit2 escribo Cordoba, muestre todos los datos de Argentina y Cordoba, y asi sucesivamente con los proximos Edit.

Casimiro Notevi
31-07-2013, 15:46:51
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

Hola, esta es mi primer consulta en este foto que siempre me ayudo muchisimo, pero esta vez no encontre solucion a mi problema je
Creo que no has buscado muy bien, jejeje... porque esa pregunta es una de las que más se hacen :)

Es fácil, sólo tienes que usar la sentencia sql estandar:
select campo1, campo2, campo3, ...
from tablaComosellame
where pais containing 'argentina' /* like, =, etc. depende de lo que necesites */
and provincia containing 'cordoba'
and ciudad containing 'pozoblanco'
and calle containing 'central'
and ...
order by campo5, campo29

Neftali [Germán.Estévez]
31-07-2013, 16:50:41
Busca en el FTP del club (http://terawiki.clubdelphi.com/), un ejemplo llamado "Filtros con ADO".

Revisa los demás (ahora sólo recuerdo este), porque es posible que encuentres otros ejemplos referentes a búsquedas y filtros.

exequielmatias1
02-08-2013, 17:58:09
Gracias me sirvió mucho sus aportes, pero tengo este asunto que no lo puedo resolver
tengo un boton buscar con este codigo>


begin
Form1.qryMesa.Close;
Form1.qryMesa.SQL.Text:='select * from PERSONAS where FECHANC > :B and FECHANC < :C and ms_pais Like' + QuotedStr ('%' + Edit2.Text + '%');
Form1.qryMesa.Parameters.ParamByName('B').Value:= DateToStr(DateTimePicker1.Date);
Form1.qryMesa.Parameters.ParamByName('C').Value:= DateToStr(DateTimePicker2.Date);
Form1.qryMesa.Open;
Label8.Caption := IntToStr (DBGrid1.DataSource.DataSet.RecordCount);
end;
end.

Esta consulta me funciona pero no puedo hacer que ademas de que me filtre las personas por fecha de nacimiento y pais, ademas me filtre por ciudad, por apellido y por nombre, y me valla discriminando los resultados en un dbgrid.

Casimiro Notevi
02-08-2013, 18:19:41
Pero eso es lo que te hemos contestado antes :confused:

Caral
02-08-2013, 18:23:55
Hola
Me parece que es un filtro múltiple.
Yo usaría varios combobox en vez del edit.
Saludos

oscarac
02-08-2013, 23:13:54
yo creo que deberias armar una cadena dependiendo de los edits algo as
strsql := 'select * from PERSONAS where FECHANC > :B and FECHANC < :C '
if edtPais.text <> '' then
strsql := Strsql + ' and Pais = ' + quotedStr(edtPais.text)
Endif

if edtProvincia.text <> '' then
strsql := Strsql + ' and Provincia = ' + quotedStr(edtPais.text)
Endif


y asi sucesivamente por cada edit