FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
TZQuery en tiempo de ejecucion....error
Hola a tod@s
basándome en una respuesta que he encontrado aquí, utilizo el siguiente código :
pero al ejecutarlo me produce el siguiente error : Código:
--------------------------- Debugger Exception Notification --------------------------- Project GNATURCCOpe.exe raised exception class EAccessViolation with message 'Violación de acceso en la dirección 005997AE en módulo 'GNATURCCOpe.exe'. Leer de dirección 00000000'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- P.D.: D7+MySql5.0+Zeos |
#2
|
||||
|
||||
Hola
Normalmente, según tengo entendido, para crear componentes en ejecución se necesita que este ligado al padre. Me da la impresión de que podría estar por ahí el error, ademas de que al crear el componente simplemente lo haces, sin definir la variable MiQry Prueba asi, tal vez te sirva. No se, digo...., aunque también, digo, no se.... Saludos
__________________
Siempre Novato |
#3
|
||||
|
||||
gracias [Caral]
ya me imaginaba que el que escribe tenía algo que ver he probado el código con las modificaciones que indicabas y funciona perfectamente No tengo tan claro que en tiempo de ejecución se deba asociar un componente con "un padre" ya que al fin y al cabo, entiendo yo , se puede crear sin dependencia de nadie. Creo que mi error estaba en que al crearlo no lo definía bien, faltaba el MiQry := TZReadOnlyQuery.Create(Self);. Pero dejando de lado las interpretaciones, que seguramente tendrás razón, muchas gracias por la ayuda . Estaba tan obsesionado con que era algo de los Zeos que no he controlado lo más obvio. Muchas Gracias [Caral] por la ayuda y más en domingo !!!! |
#4
|
||||
|
||||
Aunque la solucion al final te sirvió, no es la correcta, no es necesario definir un "padre" para ningún componente creado via código salvo que queramos que este "padre" libere los recusos del mismo, tu código es correcto salvo la sentencia: "Parent := Form1; // donde estará el ZReadOnlyQuery", ya que es innecesaria. Un TZQuery no necesita un padre para funcionar si pruebas nuevamente tu código original quitando esta línea te va a funcionar sin problemas. Es redundante decirle que su padre es tal o cual forma si al final de todos modos tu mismo lo vas a liberar. El error surge porque primero lo creas sin padre y luego le dices que siempre sí tiene...
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#5
|
||||
|
||||
Hola
Se me ocurre, con el afán de aprender: Normalmente los componentes se colocan el un form, creados o no en tiempo de ejecución. En el caso de un componente que va a enlazar a una tabla, normalmente este, esta ligado a otros componentes para actuar como puede ser un simple dbgrid, con su correspondiente datasource. Ahora mi pregunta: Si para conectar un dbgrid a un query (por ejemplo) que esta en un datamodule (por ejemplo), necesitamos indicarle la dirección, no tendríamos que indicarle al query creado por código donde residir?. En sana teoría al ser creado en el código (unit) de un form en especial debería de suponerse que pertenece a este, no lo se, ¿de ahí podría venir la redundancia que mencionas?. Por supuesto nunca he hecho esto de crear querys por código, pero me cuestiona la necesidad de enseñarle donde trabajara ya que sus (hijos) dbgrid etc) se conectaran a el. ¿Por que un query no necesita padre y otros componentes si?, o se aplica para todos por igual?, hay alguna diferencia en que sean visibles o no?. En tal caso la duda podría tenerla también cualquier otro novato y al estar latente seria bueno que nos ampliaras un poco las razones, si fueras tan amable. Saludos
__________________
Siempre Novato |
#6
|
|||
|
|||
En el momento de crear el Query (si lo creás como público en tu form) éste ya pertenece a la unit de dicho form, aunque no pertenezca al form. Un query, al ser no visual, no necesita tener un padre.
Desde cualqier otra unidad/datamodule que tengas por ahí si necesitás conectar algo al Query que creaste en el FormLala, simplemente le das la dirección (FormLala.Query) y listo. Ejemplo: Tengo un DataModule llamado DM. Tengo un Form llamado FBruno. En FBruno necesito usar un QueryBruno que está en DM. Cuando, desde mi FBruno, llamo a QueryBruno, ¿cómo lo hago? Le indico al compilador unit.objeto -> DM.QueryBruno Creo que se entiende. Saludos!!!!!!!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error en tiempo de ejecución. | BuenaOnda | Varios | 5 | 24-04-2008 07:42:48 |
Error en tiempo de ejecución | chipsoni | Varios | 2 | 16-04-2008 11:29:55 |
error en tiempo de ejecución | Nelly | Varios | 9 | 16-12-2005 15:54:14 |
Error en tiempo de ejecucion. | ramonibk | MS SQL Server | 2 | 23-10-2004 20:18:42 |
Error en tiempo de ejecucion | ramonibk | Conexión con bases de datos | 5 | 19-10-2004 09:19:39 |
|