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)
-   -   TQuery y Dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=58489)

golf2008 22-07-2008 12:59:24

TQuery y Dbgrid
 
Hola a todos, mi pregunta es como relacionar una TQuery en un DBgrid.
Porque lo único que tiene el DBgrid es el DataSource, pero me aparecen los DataSource de las Tablas, no de la Query.
Gracias

Caro 22-07-2008 13:20:31

Hola golf2008, tu Query tiene que estar enlazado a un DataSource y ese DataSource es el que enlazas con tu DBGrid.

Saluditos

golf2008 22-07-2008 13:56:05

Gracias Caro por tu tiempo, pero lo tengo así configurado.
Tengo un Data Modulo donde están los Datasource y en el formulario el TQuery.
Este TQuery está relacionado con el DataSource que está en el DataModulo y el DBGrid con el mismo DataSource.
Gracias igual

RolphyReyes 22-07-2008 13:56:15

Saludos.

Creo conveniente que te des una vuelta por el wiki del Club.

golf2008 22-07-2008 14:12:13

????????????????????

marcoszorrilla 22-07-2008 14:33:16

Siguiendo lo apuntado por los compañeros/as te tiene que funcionar, pero incidiendo en lo mismo.

Necesitas un Tquery a este le conectas un DataSource y a éste último tu rejilla.

Puedes tener todos los componentes en el formulario o en el DataModulo, pero enlazadas en la forma descrita.

Un Saludo.

duilioisola 22-07-2008 14:54:55

En el DM (TDataModule):
TQuery1
Datasource1.Dataset = TQuery1

En el Form (TForm)
DBGrid1.Datasource = DM.Datasource1

golf2008 22-07-2008 15:09:10

Gracias a todos, pero como dice marcoszorrilla no importa si está el DataModulo o en el Form.
El tema es que no me funciona.
Por ejemplo, pongan un TQuery, un DBGrid y un TEdit .
En el TEdit ingreso el Código del Cliente, al presionar <enter> ejecuto la query
SELECT * FROM clientes WHERE codigo='+Edit.text;
Se supone que en el DBGRID el puntero me tiene que quedar apuntando al Cliente del cual ingrese el código.
Pero me queda en el primer registro.

Gracias igual

Caro 22-07-2008 16:53:03

Cita:

Empezado por golf2008 (Mensaje 302221)
SELECT * FROM clientes WHERE codigo='+Edit.text;

Con esa consulta te debería mostrar el registro o los resgistros donde el codigo es igual a tu Edit.Text y es normal que te aparezca el puntero en el primer registro. Tu dices que apunte al cliente del cual has introducido el codigo, pero con tu consulta ya lo tienes. Quieres que se siga mostrando toda la lista de tus clientes en tu DBGrid y sobre eso solo posicionarte en el cliente que tiene el codigo que has introducido?? si es así puedes utilizar la función Locate de tu Query.

Sería bueno que expliques mas sobre lo que quieres hacer.

Saluditos

golf2008 22-07-2008 17:43:38

Caro lo que quiero es que en el DBgrid aparezca el/los registros de la tabla Cliente filtrada por la Query.
Por ejemplo si en el TEdit pongo un código o categoría, quiero que luego de ejecutarse la Query muestre en el DBgrid el/los Clientes que se corresponden con el código o categoría ingresada.
Saludos

Caro 22-07-2008 18:04:25

Como estas ejecutando tu Query?, te pongo un ejemplo:

Código Delphi [-]
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then
  begin
    Query1.Close;
    Query1.SQL.Text := 'SELECT * FROM clientes WHERE codigo='+Edit.Text;
    Query1.Open;
 
     //O
 
    Query1.Active:=False;
    Query1.SQL.Text:='SELECT * FROM clientes WHERE codigo='+Edit.Text;
    Query1.Active:=True;
  end;

Y para la categoria es solo aumentar un or en tu consulta, lo anterior funciona si tu campo codigo es entero, sino fuera entero debes añadir comillas.

Saluditos

golf2008 22-07-2008 19:56:49

Caro gracias por tu tiempo, yo utlizo la segunda opción de consulta.
Pero mas allá de eso no logro mostrar en el DBGrid el resultado de la consulta ejecutada con el TQuery.
Básicamente es ese mi problema.
Gracias

marcoszorrilla 22-07-2008 20:03:20

Si has hecho las conexiones según lo que te han indicado, es posible que el problema sea que la consulta no devuelva ningún dato.

Por lo que te aconsejo que no pongas ninguna claúsula Where simplemente:
Código SQL [-]
Select * From MiTabla

Así podrás ir descartando los fallos que hacen que no te funcione la consulta correctamente.

Un Saludo.

duilioisola 22-07-2008 21:40:09

También puedes enviar el archivo .dfm del datamodulo y del form para que lo veamos. Yo creo que el problema está en cómo unes el DataSource con el TQuery y el DBGrid.

golf2008 23-07-2008 12:34:46

Por fin funcionó.
El tema es que hay que insertar otro TDataSource para que la consulta se relacione al DBgrid.
En total tiene que haber un TTable con su TDataSource.
Un TQuery, otro TDataSource (relacionando el TQuery en el Dataset) y el DBGRid relacionado al último TDataSource.
Gracias a todos por su tiempo


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

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