PDA

Ver la Versión Completa : Variable TParams no almacena Params


Bauhaus1975
21-12-2008, 13:11:58
Hola de nuevo.
Aquí estoy con otro nuevo 'atasque' para compartir.
Resulta que tengo una variable de tipo TParams, y quiero mediante código definir los parámetros que contendrá, justo como se ve en el código adjunto.

El problema es que no almacena nada... es decir, tras ejecutar las sentencias con el debug veo que 'ListaParametros' no contiene absolutamente nada.


var
tmpParam : TParam; ListaParametros : TParams;
begin
ListaParametros := TParams.Create();
tmpParam := ListaParametros.CreateParam(ftString,'Nombre',ptInput);
ListaParametros.AddParam(tmpParam);
tmpParam := ListaParametros.CreateParam(ftInteger,'ID',ptInput);
ListaParametros.AddParam(tmpParam);
end;


He provado varias combinaciones de cosas y nada... no sé si es que no puede manipularse un objeto TParams fuera de un data set o algo estoy haciendo mal...

¿Alguna idea?
Gracias y un saludo.

Lepe
21-12-2008, 15:27:49
Hasta donde sé, no hace falta manipular los TParams. Cada vez que se asigna el SQL (supongo que será eso), se crean los parámetros directamente de la consulta.

Saludos

Bauhaus1975
21-12-2008, 15:58:36
Hola Lepe, y gracias.
Resulta que la variable TParams no es para una Query ni similar.
Es una variable para almacenar unos parámetros, relacionado con el programa que estoy haciendo y según como necesito pasarlos a otro objeto, el tipo más adecuado era el TParams.
Un saludo.

Al González
21-12-2008, 20:00:19
¡Hola!

Como dice la ayuda de Delphi:
To create a field parameter as well as add it to the list, use CreateParam instead. [Para crear un parámetro de campo así como agregarlo a la lista, mejor utilice CreateParam]

No es necesaria la llamada a AddParam. Aunque eso no parece ser la causa.

Respecto a "tras ejecutar las sentencias con el debug veo que 'ListaParametros' no contiene absolutamente nada", ¿qué es exactamente lo que estás viendo con el depurador? :confused:

Saludos parametrizados.

Al González. :)

Bauhaus1975
21-12-2008, 22:27:01
¿qué es exactamente lo que estás viendo con el depurador? :confused:


Hola,
Pues veo el contenido de la variable ListaParametros, que vale '()' en todo momento. También he probado a usar solo CreateParam como indicas, y el resultado es exactamente el mismo... No sé por qué no se almacenan los parámetros.
Gracias por tu ayuda y un saludo.

Al González
21-12-2008, 23:30:22
Observa el valor de la expresión ListaParametros.Count y te llevarás una agradable sorpresa. Sí que deben estar los parámetros en la lista. :)

Bauhaus1975
22-12-2008, 10:07:54
Hola,
Pues es cierto. Además, he recorrido la variable y aunque parece no contener nada, he accedido a los TParam introducidos previamente.
En fin, que he pensado que la cosa iba mal porque el depurador no mostraba información... (lamento la pérdida de tiempo causada)
Muchas gracias por la ayuda y un saludo.

Lepe
22-12-2008, 15:29:15
Si no recuerdo mal, eso pasa con todos los objetos collection o collectionItem que el depurador pone los paréntesis. En los BDS ya si trae un TreeView que permite navegar por las propiedades de los objetos, aunque para este caso no sé como fuciona.

cnPacks (googlea), cuenta con un depurador que te permite ver todas las propiedades publicadas de un objeto (debes añadir una línea como : cndebug.traceObject(param1) para verlo, pero bueno, algo es algo).

Saludos

Bauhaus1975
22-12-2008, 16:36:49
Lepe, gracias por tu aportación.
Nos documentaremos un poco más con tu ayuda.
Un saludo.