Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con Tquery (https://www.clubdelphi.com/foros/showthread.php?t=28621)

Coco_jac 26-12-2005 17:20:15

Problemas con Tquery
 
Hola amios del foro, me sucede algo raro. Sucede qu tengo en una unidad un codigo que genera un resultado en base a una cadena SQL que se le envia.
Código:


function obtenerSQL(txtquery:string):Tquery;
querysql.DatabaseName:=cnconexion;
querysql.SQL.Add(txtquery);
querysql.Open;
result:=querysql;
end;

de manera que cuando creo mi query en tiempo de ejecucion desde mi formulario lo invoco asi :

Código:

SQLquery:=Tquery.Create(self);
SQLquery:=ObtenerSQL(cadena);
SQLsource:=Tdatasource.Create(self);
SQLsource.DataSet:=SQLquery;
DbRUCprov.DataSource:=SQLsource; // Grid

Todo normal hasta aqui ,pero cuando jalo un TQuery y quiero hace lo mismo no me pinta nada. Aque se puede deber esto?

Código:


query1:=ObtenerSQL(cadena);  // query1 Tquery creado en tiempó de diseño


delphi.com.ar 26-12-2005 17:27:07

Brrrr... Feo, feo, feo...
Estas creando un objeto en una variable global (supongo) y luego en la mismo bloque de ejecución una función te lo devuelve... ¿Con qué sentido complicar así las cosas?
No me agrada pero no sería mejor pasar por referencia el TQuery a la función obtenerSQL

Código Delphi [-]
procedure OpenQuery(var AQuery: TQuery; const ASql: string);
begin
  AQuery.DatabaseName:=cnconexion;
  AQuery.Sql.Text := ASql;
  AQuery.Open;
end;

Cita:

Empezado por Coco_jac
cuando jalo un TQuery y quiero hace lo mismo no me pinta nada.

¿Que quieres decir con esto?

Coco_jac 26-12-2005 17:48:57

Gracias por el consejo , tienes toda la razon imagina que se genere como respuesta 20,000 para exagegar tener que devolver esa cantidad seria demasido a cabo de cambiarlo como me aconsejaste.

Con lo de jalar me refiero que coloco un Tquery en mi formulario y quiero hacer lo mismo es decir asignarle en query=obtenerSQL(cadena), pero no mostraba nada en el DBgrid, a diferencia de un query creado en tiempo de ejecucion que si lo hacia.

delphi.com.ar 26-12-2005 18:37:04

Cita:

Empezado por Coco_jac
Gracias por el consejo , tienes toda la razon imagina que se genere como respuesta 20,000 para exagegar tener que devolver esa cantidad seria demasido a cabo de cambiarlo como me aconsejaste.

No viene por ahí el problema, suponiendo que te refieres a cantidad de registros. En ambos casos es lo mismo, pero no tiene sentido llamar desde un procedimiento a una funcion que te retorna algo que es visible desde el procedimiento de la llamada.

Coco_jac 26-12-2005 18:43:33

segui tu consejo ya modifique todo eso


La franja horaria es GMT +2. Ahora son las 04:40:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi