Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-04-2012
GonzaloDias GonzaloDias is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 21
Poder: 0
GonzaloDias Va por buen camino
Filtro con 2 tablas

Hola Foro que tal,
Les comento un problema que me surgio al querer filtrar en el evento on change de un edit, el problema es que filtro por el nombre y apellido de un cliente que esta relacionado a la tabla equipo que contiene clienteID,
Es decir en el edit ingreso el apellido y como no es una campo propio de Equipo sino q pertenece a Cliente, no se como podria filtrarlo con la propiedad filter ya que habria que joinear con la tabla cliente en el filtro.

Código Delphi [-]
query1.SQL.Clear;
query1.SQL.Add('Select e.Id_equipo');
query1.SQL.Add('from equipo e, cliente c');
query1.SQL.Add('where e.Id_cliente = c.Id_cliente');
query1.SQL.Add('and c.Nombre like "%edit3.text%"');
query1.Open;
de esta manera no me trae nada,

Código Delphi [-]
tbl1.Filter := 'Tbl1.Id_cliente where tbl2.Nombre='+inttostr(edit3.text);
tbl1.Filtered:=true;
en este caso no se me ocurre donde relacionar las tablas con inner join o where por las claves . Sabrian alguna forma o alternativa a estos casos? Muchas gracias desde ya foro.
Responder Con Cita
  #2  
Antiguo 17-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que el problema lo tienes aquí:

Código Delphi [-]
query1.SQL.Add('and c.Nombre like "%edit3.text%"');

Prueba así:
Código Delphi [-]
query1.sql.add('and c.nombre like %' +#39+ edit3.text +#39+ '%' );

Última edición por Casimiro Notevi fecha: 17-04-2012 a las 19:03:26. Razón: Quotedstr no sirve, lo quito.
Responder Con Cita
  #3  
Antiguo 17-04-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
query1.SQL.text:= ' Select e.Id_equipo '+
                 ' from equipo e, cliente c ' +
                 ' where e.Id_cliente = c.Id_cliente '+
                 ' and c.Nombre like :tipo ' ;
query1.Params[0].value:= '%'+edit3.text+'%';
query1.Open;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 17-04-2012
GonzaloDias GonzaloDias is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 21
Poder: 0
GonzaloDias Va por buen camino
Buenisimo Caral me sirvio muchisimo, ahora como es que la consulta toma el parametro tipo si no se lo declara abajo (query1.Params[0].value:= '%'+edit3.text+'%'?. Tendre en cta las otras posibilidades, Gracias de nuevo a todos.
Responder Con Cita
  #5  
Antiguo 17-04-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

los parametros empiezan a contar de 0 a X según se van creando, al poner param[0] hace referencia al primer parametro que se encuentre en la consulta.

Solo para que lo tengas en cuenta podrías ponerlo también de esta forma.

Código Delphi [-]
query1.SQL.text:= ' Select e.Id_equipo '+
                  ' from equipo e, cliente c ' +
                  ' where e.Id_cliente = c.Id_cliente '+
                  ' and c.Nombre like '+quotedstr('%'+edit3.text+'%');
Aunque seguramente te dirán que la forma más correcta es la que te indica Caral.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.

Última edición por Casimiro Notevi fecha: 18-04-2012 a las 14:29:08.
Responder Con Cita
  #6  
Antiguo 18-04-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Me he dado cuento de que puse índica en lugar de indica, a mi también me hace daño a la vista pero ya no puedo modificar el mensaje.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #7  
Antiguo 18-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ElDioni Ver Mensaje
Me he dado cuento de que puse índica en lugar de indica, a mi también me hace daño a la vista pero ya no puedo modificar el mensaje.Saludos.
Solucionado el detallito
Por cierto, ya que estamos de detallitos, tu firma dice: conformate en lugar de confórmate
Responder Con Cita
  #8  
Antiguo 23-04-2012
Avatar de NCcapa
NCcapa NCcapa is offline
Registrado
 
Registrado: sep 2006
Posts: 4
Poder: 0
NCcapa Va por buen camino
Wink NCcapa --> Utilizando LEFT JOIN

Hola a todos, talvez sea la primera vez que participo espero que les sirva este codigo
particularmente yo utilizaría la siguiente consulta que en cierta forma se parece a la de Caral:

Código Delphi [-]
query1.SQL.text:= ' SELECT e.Id_equipo '+
                 ' FROM equipo e LEFT JOIN cliente c ON e.Id_cliente = c.Id_cliente ' +
                 ' WHERE c.Nombre like :NombreCliente ' ;
query1.Parameters.ParamByName('NombreCliente').Value := edit3.text;
query1.Open;

Espero ayudar en algo

hasta pronto.

Última edición por Casimiro Notevi fecha: 23-04-2012 a las 10:35:31.
Responder Con Cita
  #9  
Antiguo 23-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por participar y bienvenido a clubdelphi.

Cuando pongas código, recuerda encerrarlo entre los tags correspondientes, ejemplo:




.
Responder Con Cita
  #10  
Antiguo 23-04-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Solucionado el detallito
Por cierto, ya que estamos de detallitos, tu firma dice: conformate en lugar de confórmate
chssst, esas cosas no se dicen en público.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #11  
Antiguo 23-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ElDioni Ver Mensaje
chssst, esas cosas no se dicen en público.
...




.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Filtro eaguila7 C++ Builder 3 18-11-2008 10:56:18
filtro entre dos tablas en tiempo de ejecucion Goyo OOP 16 26-09-2006 22:39:31
Mal filtro vicrati Conexión con bases de datos 2 11-04-2004 20:36:51
tablas con filtro davidgaldo Conexión con bases de datos 2 20-02-2004 20:09:09
Filtro y EOF javiermorales Conexión con bases de datos 2 07-10-2003 16:28:08


La franja horaria es GMT +2. Ahora son las 13:45:46.


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
Copyright 1996-2007 Club Delphi