Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Filtros y zeos en busquedas parciales (https://www.clubdelphi.com/foros/showthread.php?t=43207)

ancara 04-05-2007 18:16:34

Filtros y zeos en busquedas parciales
 
Hola!! me he repasado el foro y he encontrado varias cosas referentes a este tema, pero ninguna me da la solucion, alguien podria ayudarme??

estoy realizando una aplicacion en delphi con mysql 5 y las zeos y no consigo que me funcionen los filtros. con odbc sí me funcionan todos los filtros pero cambie a zeos para ahorrar una capa en la conexion y ninguno funciona :(

tengo un formulario con un edit y un botón de búsqueda y otro formulario con un dbgrid.

la idea es insertar un campo en el edit y al pulsar el boton de busqueda se activa el filtro y realiza una busqueda parcial (A*) y en caso de existir campos coincidentes se debe mostrar el otro formulario con los datos obtenidos.

lo que yo hago es lo siguiente:

modulodatos.TBCliente.Filter:='Nombre='''+VConsultarClientenombre.nombre.Text+'''';
modulodatos.TBCliente.Filtered:=true;
if (ModuloDatos.TBCliente.eof)then
begin
modulodatos.tbcliente.Filtered:=false;
raise ENombreNoEncontrado.newInstance;
end;
formulariobusqueda.hide;
formulariodatos.show;

¿alguien puede orientarme? tambien lo he intentado con las zquery y no puedo realizar busquedas parciales o no me devuelve nada o me devuelve todos los registros.


Gracias por vuestro tiempo!!!

Caral 04-05-2007 19:00:17

Hola ancara
Para mi seria algo asi:
Código Delphi [-]
begin
modulodatos.TBCliente.Filter:='Nombre='''+VConsultarClientenombre.nombre.Text+'''';
modulodatos.TBCliente.Filtered:=true;
if (ModuloDatos.TBCliente.Filtered = true) then
begin
formulariobusqueda.hide;
formulariodatos.show;
end
else
modulodatos.tbcliente.Filtered:=false;
raise ENombreNoEncontrado.newInstance;
end;
No entiendo la necesidad de recorer la tabla con un eof en un filtro.
Saludos

ancara 04-05-2007 19:11:38

Gracias caral!! pero eso es justamente lo que yo tengo ¿no? le has dado la vuelta a la sentencia if. el uso que yo hago del eof es lanzar una excepción que nos avise de que no se han encontrado registros coincidentes, no recorro nada.

Caral 04-05-2007 19:14:58

Hola
Y sigo pensando, para que?
Si te fijas no es precisamente lo que tienes.
Saludos

ancara 04-05-2007 19:39:46

Caral,tienes razón no es lo mismo, ahora me sale siempre el formulario del tdbgrid, pero me sigue dando como resultados de la búsqueda conjunto vacío ya sea con busqueda total o parcial (a*). la consulta sigue sin rescatar ningún dato ¿por qué será?

Caral 04-05-2007 20:05:44

Hola
Bueno intentemoslo asi:
Código Delphi [-]
modulodatos.TBCliente.Filter:='Nombre Like ''' + VConsultarClientenombre.Text + '*'''';
modulodatos.TBCliente.Filtered:=true;
Con esto supongo que ( VConsultarClientenombre ) es un edit, verdad?
Saludos

ancara 04-05-2007 20:09:25

Cita:

Empezado por Caral
Hola
Bueno intentemoslo asi:
Código Delphi [-]modulodatos.TBCliente.Filter:='Nombre Like ''' + VConsultarClientenombre.Text + '*''''; modulodatos.TBCliente.Filtered:=true;

Con esto supongo que ( VConsultarClientenombre ) es un edit, verdad?
Saludos

Perdón , sí es un edit

ancara 04-05-2007 20:13:47

Muchas gracias Caral!!
 
FUNCIONAAA!!!!que torpe soy verdad?? muxiiiiiiisimas gracias, ya me veía cambiando todas las tablas del modulo de datos de nuevo.

Muchas gracias por responder tan pronto. :)


La franja horaria es GMT +2. Ahora son las 21:53:12.

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