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)
-   -   problema con los query (https://www.clubdelphi.com/foros/showthread.php?t=44091)

ercrizeporta 28-05-2007 19:42:22

problema con los query
 
hola, voy a mostrar el codigo que utilizo y ahora haré mi consulta sobre el...

function CreateQuery (const TheSql:string):TQuery;
begin
Result := TQuery.Create(nil);
Result.Transaction := tu componente transaction
Result.Database := tu componente database;
Result.sql.text := TheSql;
end;

procedure ejemplo();
var qry:Tquery;
begin
q := Createqry('select * from tabla ');
q.ExecSql;
q.Free;
end;


Mi pregunta es, una vez que en q tengo los datos de la tabla que comando debo de utilizar para poder acceder a ver esos datos???
pensaba en hacer q['nombrecolumna'], pero no tengo definida ninguna columna en el query y no se definirla así que me he quedado un poco atascado aquí...


muchas gracias!!

jhonny 28-05-2007 20:02:26

Bueno, para poder ver esos datos puedes usar varios métodos, podrías asignar por ejemplo tu Query a un DBGrid...
En este caso y debido a que estas haciendo una consulta de tipo "Select" deberías cambiar un poco el método Ejemplo(); y colocarlo asi:

Código Delphi [-]
procedure ejemplo();
  var qry:Tquery;
begin 
  q := Createqry('select * from tabla ');
  q.Open;//Aqui cambien el ExecSQL por OPEN
  q.Free;
end;
y para asignar esa consulta a un Grid seria con los siguientes pasos:
1: Coloca un TDBGrid y un TDataSource en tu form.
2: Asigna ese TDataSource a la Grid por medio de su propiedad DataSource.
3: Modifica el método Ejemplo(); asi :
Código Delphi [-]
procedure ejemplo();
  var qry:Tquery;
begin 
  q := Createqry('select * from tabla ');
  q.Close;//Siempre acostumbro cerrar antes de abrir.
  q.Open;//Aqui cambien el ExecSQL por OPEN
  DataSource1.DataSet := q;
end;
Y Listo asi debería mostrarte los datos, no le hice un q.free porque si lo liberas pues no alcanzaras a ver los datos en el DBGrid ya que se desaparecerían rápidamente. Espero me haya hecho entender.

Lepe 28-05-2007 21:22:09

Siempre podrás usar q.FieldByname('nombrecampo').Asxxxx


Cita:

Empezado por jhonny
q.Close;//Siempre acostumbro cerrar antes de abrir.

Buena costumbre, pero en este caso particular no tiene sentido porque de hecho, se ha creado en memoria esa consulta (por tanto no existía con anterioridad). dicho de otra forma, esa línea no haría falta.

Habría que tener cuidado de no llamar al procedimiento "ejemplo" 2 veces, porque se crearía 2 querys, la primera de ellas, se quedaría perdida en memoria.

Saludos


La franja horaria es GMT +2. Ahora son las 14:01:52.

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