Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como puedo hacer una consulta con un Query y que se actualize en el DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=23875)

olbeup 01-08-2005 14:25:14

Como puedo hacer una consulta con un Query y que se actualize en el DBGrid
 
Hola compañeros de ClubDelphi,

Tengo un problema que me trae de cabeza, estoy realizando una consulta en SQL que es la siguiente:

Select * From Ventas Where IdTicket=78;

Tengo en el formulario un Query, DBGrid, Table, DataSource, todos estan conectado bien entre si, pero el cursor (>) no se mueve de su sito la base de datos esta abierta con todos los registros en pantalla, la base de datos es access.:o

Neftali [Germán.Estévez] 01-08-2005 14:33:56

Utiliza un Locate o FindKey con el TTable; Eso buscará el registro y te posicionará en el. Y automáticamente verás como el el DBGrid el puntero (>) va a ese registro.

olbeup 01-08-2005 14:56:58

http://www.clubdelphi.com/foros/imag...ine=1090400110Neftali vbmenu_register("postmenu_99363", true);
Moderador

Gracias NefTali por tan rapida respuesta,
Pero no se puede hacer cun sql :rolleyes: , gracias.

Saludos.

Neftali [Germán.Estévez] 01-08-2005 15:21:03

¿Exactamente, qué quieres hacer con un SQL?

Puedes hacer la búsqueda con SQL, pero si quieres que en la tabla se te active el registro que has encontrado debes hacer las búsqued en el TTable (Locate o FindKey)

O tal vez te estoy entendiendo mal...

olbeup 01-08-2005 15:43:39

Ya se la forma de encontrar los registros que es (Locate, Findkey o FindNearest), que quiero hacer con el registro, solo que el DBGrid apunte al registro que he seleccionado, solo eso, pero sino se puede hacer con SQL, pues entonces usare (Locate, Findkey o FindNearest), te voy a mostrar lo que estoy haciendo.

ejemplo:

y el Memo1 Contiene 'Select * Form Ventas Where IdTicket=78;'

Label3.Caption := 'Ejecutando SQL, Espere...';
Label3.Refresh;
DataModule4.Query1.SQL.Clear;
DataModule4.Query1.SQL.Text := Memo1.Text;
DataModule4.Query1.DatabaseName := 'DBTabla1';
DataModule4.Query1.DataSource := DataModule4.DataSource1;
DataModule4.Query1.Prepare;
DataModule4.Query1.ExecSQL;
Label3.Caption := '';

y no quiero utilizar (Locate, Findkey o FindNearest), porque no quiero, porque estoy empezando con SQL y estoy averiguando si con SQL se puede hacer todo o casi todo.;)

Lepe 01-08-2005 15:51:54

Primero: En consultas donde hagas un SELECT, debes abrir la consulta con Query1.Open; Cuando hagas un INSERT, UPDATE o DELETE, entonces si debes usar ExecSql.

Segundo: Si ese query1 tambien lo utilizas para un grid, automaticamente el grid mostrará los nuevos resultados de esa consulta, que para el caso concreto, solo mostrará el registro de ticket 78

Al abrir una consulta con .Open, por defecto se quedará en el primer registro; si quieres moverte de registro por código, no te queda más remedio que usar los métodos propios del Query:
- First
- Prior
- Next
- Last
- Locate, findkey ....

Un saludo

Neftali [Germán.Estévez] 01-08-2005 16:44:44

Tu problema es que muestras los registros en el DBGrid con un DataSet (que es la tabla) y haces una búsqueda sobre la tabla con otro DataSet (Query);
No puedes juntar ambos, puesto que son DataSets distintos, uno devuelve x registros (tabla) y otro te devuelve 1 (el query);

Con SQL puedes obtener DataSets, pero no te puedes realizar recorridos sobre ellos (SQL no es para eso); Para eso debes usar métodos del TDataset, que son los que te han comentado (Firsm Next,... para secuencial y Locate/FindKey para búsquedas).

olbeup 01-08-2005 17:37:28

Gracias NefTali y Lepe, por Vuestras respuestas, me han ayudado bastante, bastante, bastante.


Gracias, gracias, gracias.

Saludos.
;)


La franja horaria es GMT +2. Ahora son las 04:14:38.

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