Ejecutar objeto Tquery
Buenas a tod@s,
Tengo el siguiente problemilla: En el modulo1, construyo a través de una variable string el nombre del objeto TQuery que quiero ejecutar. Una vez construida, lo único que tengo que hacer es: Código:
TQuery(FindComponent(s_query)).Open Creía que lo único que tenía que hacer era añadir al nombre del objeto Tquery que había obtenido anteriormente el prefijo Datamodule, es decir: Código:
s_query := "DataModule1."+Trim(s_query); Cita:
Alguien sabe que estoy haciendo mal??? |
mira estaria bueno que dijeras en que linea te da el error. y el codigo de error
porque en mi experienciaa si es 000000 es que algo no esta creado, Fijate de andarlo depuradon paso a paso y por ahi capaz que puedas descular que es. |
Vamos por partes, FindComponet es un método del objeto TComponent y lo que hace es buscar un componente que pertenece al primero, es decir, si tu estas usando FindComponent dentro de un formulario solo encontrara componentes que pertenecen a ese formulario, no componentes que estén en otro formulario ni en un Datamodule. Por lo que lo mas probable es que cuando tu haces:
la función FindComponent este devolviendo nil, como no lo compruebas y haces directamente un TypeCast e intentas acceder a un método de un objeto que no existe, es ahí donde te da el error. Prueba a hacer algo como esto:
|
Púes he puesto en práctica lo que me ha aconsejado Seoane y he resuelto el problema que tenía.
Muchas gracias por todo |
¿Pues no resultaría más comodo devolver un TQuery?
Ya en el datamodule:
Tal y como veo la cosa, quizás fuera bueno añadir todas las querys creadas a un TStringList, así los tendrías agrupados, facilitando la destrucción o el acceso a los mismos. Edito: El problema que veo, es que un datamodule tendrá muchisimas tablas, querys, campos persistentes etc, realizar un bucle con FindComponent por todos ellos hasta encontrar el query deseado puede ser excesivo, con el TStringList, sería como acceder con un IndexOf a un StringList. En el Stringlist, almacenas el nombre del Query (parámetro Name), despues a su objeto asociado, le añades el Query Creado. Saludos |
La franja horaria es GMT +2. Ahora son las 12:38:09. |
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