FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Error dbexpress y clientdatasets
Hola a todos,
tengo un problema un tanto curioso y me gustaría saber si a alguno de vosotros os ha ocurrido. Resulta que tengo dos módulos de datos que se crean al arrancar la aplicación. Tengo tropecientos formularios que creo en runtime. Hay uno, que si lo abro antes de abrir otro concreto, funciona correctamente. Sin embargo, si lo abro tras abrir el otro, o estando este segundo abierto, me da el error "SQLConnection property required for this operation" y el formulario no arranca. Pongo un punto de ruptura en la primera instrucción que se ejecuta en el evento FormCreate, y casca antes de llegar ahí. No siempre casca, pero sí en el 95% de las veces. Deduzco que hay internamente algún código que se ejecuta antes del evento FormCreate, pero no sé cómo trazarlo. Es un tema muy raro, aunque sí debo decir que utilizo querys comunes en los dos formularios ( sin clonarlas ). entiendo que podría dar un error de lógica, pero no de 'inconsistencia'. Me trae en jaque. Recorro todos los DataSets para ver si algún SQLDataset no tiene alimentado el valor SQLConnection, pero casca antes. Utilizo firebird, dbexpress, sqlDatasets, datasetproviders y clientdatasets. Delphi 7. Gracias por vuestra atención. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#2
|
||||
|
||||
Comprueba si tienes abierto algún dataset del formulario en tiempo de diseño. Antes del create propiamente dicho se ejecuta la carga de componentes del formulario, y tiene toda la pinta de que uno de los componentes necesita conectarse a la base de datos mientras se está creando.
Un saludo |
#3
|
||||
|
||||
Hola Javier.
El mensaje de error que señalas aparece cuando el conjunto de datos SQLDataSet necesita realizar algo a través del objeto TSQLConnection, pero éste no se encuentra asignado en la propiedad SQLConnection. Es como si el segundo formulario causara que la propiedad SQLConnection de una de las consultas se perdiera. Por otra parte, no es buena idea dejar en tiempo de diseño la propiedad Active de los conjuntos de datos en True. Sino, abrirlos en tiempo de ejecución conforme los procesos y formularios de la aplicación los necesiten. En cuanto a poder ver el camino que siguió el programa hasta llegar al punto de ruptura, usa la ventana de pila de llamadas (call stack), pero compilando primero la aplicación con la opción Use Debug DCUs de las opciones del proyecto. Algunas preguntas: ¿Estás creando y destruyendo módulos de datos en tiempo de ejecución o solamente formularios? ¿Todos los componentes de acceso a datos están en los módulos de datos o algunos están en formularios? ¿Existen componentes TSQLDataSet que no estén en el mismo módulo de datos que el componente TSQLConnection? ¿Usas herencia visual? (plantillas de formularios) Me voy a dormir, pero por la mañana americana regresaré a echar otro vistazo. |
#4
|
||||||||
|
||||||||
Gracias a todos por responder.
Intentaré explicar con más detalle la batería de preguntas que me haceis. Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Cita:
Seguiré investigando e intentaré retroalimentar los avances o la solución. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#5
|
||||
|
||||
Esto es un poltergueist o como demonios se escriba
Si comento la apertura de un SQLDataset + clientDataset concreto, no me da el error. Si lo descomento, me da. Insisto, es cuando abro primero un módulo y luego el otro. Si lo hago en orden inverso, funciona. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
||||
|
||||
Bueno, haciendo diferentes pruebas he conseguido llegar a que no me casque y funcione como debe hacerlo.
No sé porqué extraña razón, hasta el momento, un servidor de Uds. para hacer dos datasets maestro detalle, los hacía un poco a manija. ( Por favor no os riais ). Qué quiere decir esto: que tengo un maestro, y en su evento OndataChange, por cada tabla detalle, cierro el dataset, doy valor al parámetro, y vuelvo a abrirlo. Hasta ahora siempre me ha funcionado, hasta éste el caso que nos ocupa. Finalmente, una vez identificado el dataset que me provocaba el error ( que por cierto sigo sin saber porqué fallaba ) , he cambiado la manera de relacionarlo con el dataset maestro, y he utilizado las propiedades de ClientDataset, MasterSource y MasterFields, abriéndolo al crear el formulario y quitando del evento OnDataChange del maestro la apertura del mismo. No sé si ha sido un aviso de Delphi del tipo "no seas tan burro" o algo similar, pero como os contaba, hasta ahora NUNCA ME HABIA PASADO. Espero que le sirva a alguien la respuesta, al menos a los que os habeis interesado para saber que está resuelto el problema Gracias a todos PD: Al, la invitación sigue en pie
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#7
|
|||
|
|||
ayuda
buenas hola ha todos
miren tengo que hacer un programa que elimine registros y el codigo lo tengo asi cd.query1.close; cd.query1.SQL.add('delete*from clilentes'); cd.query1.SQL.add('where id_cliente=:id'); cd.query1.Params[0].AsInteger:=strtoint(edit1.Text); cd.query1.Prepare; cd.query1.UnPrepare; cd.query1.ExecSQL; y pos si me elimina pero cuando quiero eliminar por segunda ves me marca error quiero que me elimine cuantos quiera |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
dbExpress - ClientDataSets anidados | PabloZZZ | Conexión con bases de datos | 4 | 13-10-2010 22:58:29 |
ClientDataSets y Firebird | Walterdf | Conexión con bases de datos | 19 | 27-08-2010 20:41:31 |
dbexpress Error: unknown error Code '101' | raorre | Conexión con bases de datos | 3 | 13-10-2008 07:53:49 |
ClientDataSets- Personalizar errores | rochi | Conexión con bases de datos | 0 | 03-05-2008 06:47:52 |
Clientdatasets anidados con ADO | Johnny Q | Conexión con bases de datos | 4 | 03-11-2005 02:53:25 |
|