Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   buscar campo de Query en Table... (https://www.clubdelphi.com/foros/showthread.php?t=69976)

Pensa2r 22-09-2010 16:03:29

buscar campo de Query en Table...
 
Hola soy muy poco experto en el tema y necesito ayuda, agradecer de antemano la solución que podaís dar.
Necesito hacer lo siguiente:
Al dar clic a un DBGrid que se vincula a un ADOQuery, este coja el campo este y lo busque en una tabla ADOTable de la misma que he sacado datos para el query.
No se si me he explicado.
Un saludo.

Casimiro Notevi 22-09-2010 16:33:45

Cita:

Empezado por Pensa2r (Mensaje 377135)
[..] Al dar clic a un DBGrid que se vincula a un ADOQuery, este coja el campo este y lo busque en una tabla ADOTable de la misma que he sacado datos para el query.

Cita:

Empezado por Pensa2r (Mensaje 377135)
No se si me he explicado. Un saludo.

A mí me ha parecido un trabalenguas :)

¿Qué es lo que quieres conseguir exactamente?

ElDioni 22-09-2010 17:09:09

Yo tampoco lo he entendido muy bien pero si te puedo decir que al pulsar en una línea de un grid que está ligada a un adoquery es como si seleccionaras el registro en el query por lo que solo tendrías que hacer en el envent onclick del dbgrid:

Código Delphi [-]
adoquery1.fieldbyname('elnombredelcampo').AsString;

para acceder al valor del campo que quieras en la línea de registro que tenías señalada en el dbgrid.

Un saludo.

Caral 22-09-2010 18:17:41

Hola
Me parece que es un poco repetir, no?.
Si tienes una consulta en en query por que no hacer la busqueda ahi mismo?.
Claro, esto depende de lo que necesites, pero me extraña que se quiera BUSCAR el dato en un ADOTable, osea, se tendria que filtrar.
Si nos explicas algo mas, con gusto haremos el milagro......
Saludos

Pensa2r 22-09-2010 18:19:18

GRACIAS por el interes y perdonad mi mala expresión.
A ver si ahora lo hago mejor...
tengo un Query que coge datos de una tabla reparaciones, de una tabla clientes y de una tabla aparato. Al hacer clic en el DBGrid que ha cargado este query, en el evento onclick quiero que coja el valor de código reparaciones desde este query y me lo busque en la tabla reparaciones posicionandome en la tabla reparaciones en el mismo código reparaciones del query.
Algo como el gotonearest pero en el query no me vale, o eso creo.
...creo que aun esta la cosa liada...jajaja..
GRACIAS

Caral 22-09-2010 18:24:20

Hola
Facil, sin usar nada de nada solo un sinple ADD a la consulta.
Simple, facil, llano, caminante, etc. etc.....
Saludos

Pensa2r 22-09-2010 18:27:57

GRACIAS Caral pero como hago ese ADD, repito soy muy novato en sql y bases de datos. Si me puedes dejar algún ejemplo..
Un saludo.

Caral 22-09-2010 18:29:43

Hola
Es muy sencillo.
Empecemos por que nos muestres la consulta sql que usas en el ADOQuery.
Con esta consulta te explico como obtendrás ese dato en el evento que quieras.
Saludos

Pensa2r 22-09-2010 18:32:42

ok esto es lo que tengo:
Cita:

SELECT REPARACIONES.ESTADO,REPARACIONES.FACTURA,REPARACIONES.COD_REPARACIONES,CLIENTE.EMPRESA,APARATO.APARA TO,APARATO.MARCA,APARATO.MODELO,REPARACIONES.NUM_SERIE,APARATO.CHASIS,REPARACIONES.FECHA_RESGUARDO,R EPARACIONES.COD_CLIENTE,REPARACIONES.COD_APARATO
FROM REPARACIONES,CLIENTE,APARATO
WHERE (CLIENTE.COD_CLIENTE = REPARACIONES.COD_CLIENTE) AND
(APARATO.COD_APARATO = REPARACIONES.COD_APARATO)

Caral 22-09-2010 18:36:47

Hola
Bien:
Dejame entender las cosas bien.
Tienes un dbgrid.
Este DBgrid es cargado con los datos del adoquery.
Quieres que al dar click :
1- Que el dato se muestre en otro lado
2- Que el dato sea buscado en la tabla X?
3- Que ?

Pregunta adicional: Que BD usas?.
Saludos

Caro 22-09-2010 18:41:20

Hola Pensa2r, puedes utilizar la función Locate de tu AdoTable pasandole el codigo de reparación que recuperas de tu AdoQuery:

Código Delphi [-]
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  Codigo := AdoQuery.FieldByName('COD_REPARACIONES').AsString;
  AdoTable.Locate('COD_REPARACIONES',Codigo,[loCaseInsensitive]);
  ....................................

Saluditos

Caro 22-09-2010 18:43:37

Cita:

Empezado por Caral (Mensaje 377177)
Hola
Bien:
Dejame entender las cosas bien.
Tienes un dbgrid.
Este DBgrid es cargado con los datos del adoquery.
Quieres que al dar click :
1- Que el dato se muestre en otro lado
2- Que el dato sea buscado en la tabla X?
3- Que ?

Pregunta adicional: Que BD usas?.

Hola Caral :), lo que yo entiendo es que tiene en el DBGrid datos de 3 tablas y al hacer click en un registro, se posicione en el registro que corresponde en su ADoTable de una de sus tablas.

Saluditos

Caral 22-09-2010 18:46:04

Hola Caro.
Si eso estoy entendiendo yo tambien, lo que pasa es que estoy tratando de ver como podemos elminar el AdoTable y usar la misma consulta para que nos traiga lo que necesita.
Ya sabes, complicandome la vida...........
Saludos

Pensa2r 22-09-2010 18:47:00

si eso, al dar clic en el DBGrid que tiene cargado el query, en la fila del DBGrid cogera un dato de cod_reparaciones y este me lo busca en la tabla reparaciones.
base de datos es mysql desde el mismo ordenador instalada con xampp.

Pensa2r 22-09-2010 18:56:18

Probado lo que comenta CAROL :
Cita:


begin
Codigo := Modulo_DATOS.QueryREPARACIONES.FieldByName('COD_REPARACIONES').AsString;
Modulo_DATOS.TablaREPARACIONES.Locate('COD_REPARACIONES',Codigo,[]);
end;

pero no se inmuta la tabla, la he puesto en otro DBGrid para ver su funcionamiento.

Caral 22-09-2010 18:58:39

Hola
La verdad a mi me gustaria ver el programa y la BD que me imagino es Access.
Si pudieras subirla a algun lado, seria muy bueno ver lo que estas haciendo.
Saludos

Pensa2r 22-09-2010 19:07:56

es mysql creada en phpmyadmin del mismo instalador xampp.
a ver como puedo subir esto, aunque en realidad lo que he echo aun no es nada solo eso..
la idea es un programa taller donde creo una tabla general de reparaciones y luego la indexo con tabla cliente y aparato cor su codigo principal de cada tabla.
El caso es que tengo un programa hace mucho tiempo en DB paradox pero la queria cambiar a mysql, para eso de ver si luego esos datos los puedo ver tambien en un navegador por php.

Caro 22-09-2010 19:09:05

Cita:

Empezado por Pensa2r (Mensaje 377185)
Probado lo que comenta CAROL :

pero no se inmuta la tabla, la he puesto en otro DBGrid para ver su funcionamiento.

Hola de nuevo, prueba así:

Código Delphi [-]
Codigo := Trim(Modulo_DATOS.QueryREPARACIONES.FieldByName('COD_REPARACIONES').AsString);
if Modulo_DATOS.TablaREPARACIONES.Locate('COD_REPARACIONES',Codigo,[]) then
  showmessage('coinciden los datos')
else
 showmessage('no coinciden');

y dinos que mensaje te muestra.

Saluditos

Caro 22-09-2010 19:11:04

Cita:

Empezado por Caral (Mensaje 377182)
Si eso estoy entendiendo yo tambien, lo que pasa es que estoy tratando de ver como podemos elminar el AdoTable y usar la misma consulta para que nos traiga lo que necesita.
Ya sabes, complicandome la vida...........

;).

Saluditos

Pensa2r 22-09-2010 19:20:14

Cita:

Empezado por Caro (Mensaje 377188)
Hola de nuevo, prueba así:

Código Delphi [-]
y dinos que mensaje te muestra.

Saluditos

COINCIDEN LOS DATOS.


La franja horaria es GMT +2. Ahora son las 08:28:42.

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