Error: Cannot perform this operation on a closed dataset
Hola gente,
Les cuento que estoy haciendo un programita el cual me esta llevando mucho tiempo porque me sale un error que no se como solucionarlo, me podrían ayudar? Resulta que tengo un formulario donde agrego tareas, lo ejecuto y funciona, pero cuando agrego varias tareas a la vez me sale el siguiente error: ' Cannot perform this operation on a closed dataset' y la verdad es que no tengo idea de como solucionarlo. Agradecere mucho su ayuda, saludos:) |
Hola,
la traduccion de este error es que no se puede hacer la operacion en un conjunto de datos cerrados. Esto es, tienes el query o la tabla cerrados. Para abrirlos, debes usar query.open o bien query.active := true. En caso de ser tablas, table.Open. Ten en cuenta que si usas ado y queries, despues de un 'select' debes usar active := true, mientras que para el resto debes usar ExecSQL. saludos |
Hola, gracias por la rapidez de tu repuesta.
Pero te cuento que esas consideraciones las tuve en cuenta. En agregar una tarea uso un insert, (tarabajo con ado y query), y al terminar pongo ExecSQL, Y tengo otro procediemiento donde uso un select, decime escribo query.active:= true o query.open? Igual probe de las dos maneras y me sigue saliendo error. :confused: |
Bien, deberias hacer algo asi
al final debes abrirla para poder seguir trabajando con ella. Usa el debugger (f5,f7,f8) para saber exactamente en que linea te salta y prueba de ponernos el codigo, si aun no se soluciona. PD: personalmente siempre uso active := false, active := true, aunque creo que son completamente equivalentes. Eso si, para el select el active/open. Para el resto, el execsql. No entiendo esta distincion en ado, pues en bde no ocurre, pero asi es. Saludos. |
ok, mira sos super, muchas gracias por tu ayuda, pero no tuve exito, asi que te paso mi codigo original y decime como lo arreglo porfis:
donde buscaroperador es:
|
y donde te salta la excepcion? en el execsql? o despues?
creo que el problema te viene del dbgrid1.Fields[0].Value, y, si cbasunto y mcom son dbedits, quiza tambien por alli. prueba de poner valores de test a estos o ves comentando las lineas, para saber exactamente que es lo que te lo esta provocando, si no es en el execsql. Usa f5,f7,f8 para saber exactamente donde te salta. El debugger esta precisamente para esto. |
No estan funcionando correactamente las etiquetas de DELPHI
|
debes usar... (delphi) al inicio, (/delphi) al final, siendo los parentesis corchetes [,].
:confused: creo q si... |
apenas pasa el ExecSQL me salta el error :(
|
vamos a ver... si pones un breakpoint (F5) en la linea
y vas con el F8 siguiendo linea por linea...te salta en la linea
? me esta dando la impresion que te salta antes, cuando asignas los valores a los parametros. O bien despues del execsql, en alguna otra funcion que se ejecute a continuacion. En el codigo que has mostrado actualmente no veo ningun error. |
Te cuento lo que me salio:
voy con f8 y pasa ExecSQL, y me sale el error que te comento, y una vez que acepto el error el puntero se posiciona en el formulario que crea el form de agregar tarea ftarea:=Tftarea.Create(self); ftarea.Showmodal; ftarea.Free; (aqui apunta ) me siento una inutil :(. Yo me estoy yendo a clases, pero por favor si puedes responde si sabes como lo soluciono, seguramente durante la tarde le dare una miradita. Saludos y muchas gracias:) |
Cita:
Cita:
sinceramente, no se verlo. Si es en la linea execsql donde te salta, no lo entiendo. Quiza tengas la tabla abierta en modo exclusivo por otro lado, por lo que acceder a ella te provoque el error, o quizas codigo en los eventos OnDataChange, OnPost, etc... que te cierre la tabla. Sinceramente, no lo se. Creia que era en el momento en que asignas los argumentos, y que el error de tabla cerrada te lo daba de otra que no fuese tarea. PD: prueba de poner
a ver si soluciona algo... |
La franja horaria es GMT +2. Ahora son las 07:00:06. |
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