FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error al refrescar el Query
Saludos,
Llevo rato intentando resolver el siguiente problema pero aun no encuentro nada , luego de cada insert, update o delete que realizo en la base de datos ingreso el siguiente codigo para refrescar el Query:
el problema esta en que, aunque realiza la rutina sql correctamente, me genera el siguiente error: Query: cannot perform this operation on a closed dataset. Espero puedan ayudarme, gracias de antemano. |
#2
|
||||
|
||||
Comprueba que la propiedad Active del DataSet sea TRUE. Ten en cuenta que algunas operaciones pueden cerrarlo así que revisa lo que haces y, en última instancia, usa el método Open.
|
#3
|
|||
|
|||
Cita:
El Dataset esta activo, intente con el metodo open luego del rutina pero genera el siguiete error: Cannont Open / define command use Execute / ExcSql
Última edición por ecfisa fecha: 31-01-2019 a las 21:08:24. Razón: Quitar emoticones del código |
#4
|
||||
|
||||
Prueba cerrando y abriendo el query, aunque tambien puedes revisar que sentencia sql tiene tu query, que de pronto no se quede pegado con tus sentencias de update o insert y que este si tenga la de algún tipo de select de datos.
|
#5
|
||||
|
||||
¿No será que en alguna función, como el paramguardar o el ExecSQL lo estás cerrando sin querer?
Saludos |
#6
|
|||
|
|||
Cita:
Buen día Soa, la unica forma de refrescar es realizando una rutina select despues de el insert, update o delete. Con esto resuelvo, aun asi me gustaria entender la causa de este error, debido a que estaba funcionando correctamente. Gracias a todos por sus respuestas. |
#7
|
||||
|
||||
Cita:
Sólamente podemos intentar averiguar.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
|||
|
|||
Cita:
Saludos, casimiro si observas el comentario #3 encontraras el codigo. Gracias. |
#9
|
||||
|
||||
Ya, pero me refería a otro posible código asociado, triggers, etc.
Además, te recomiendo, aunque sea por probar, que no uses with Modulo.DMBox.FDQCategoria do
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
¿Exactamente con ese mismo código?
Porque así, como se ve, después de hacer el Insert o Update ningún Refresh funcionaría con el objeto Modulo.DMBox.FDQCategoria. Y concuerdo con Casimiro: ¡No uses With en ningún caso! Tiene un enorme defecto de fábrica. |
#11
|
|||
|
|||
Cita:
Saludos, Veran les comentare que paso y es probable que uds aclaren mis dudas todos los componentes para la conexion de la base de datos, consultas y demas rutinas, estan alojados en un Data Module donde el Unit es "Modulo" y el Data Module "DataModulo". Esto asi, funcionaba al realizar un insert, update o delete pero al realizar una consulta a la tabla, solo se veia que consultaba por el cursos sql, mas no mostraba los datos en el dbgrid. Lo que hice fue renombrar el Data module a "DMBox" y ya me consultaba normalmente pero ahora al guardar, modificar o eliminar me generaba el error que comente al principio, y esto sin cambiar nada el codigo solo el nombre del Data Module. Suena extraño pero eso fue lo que note y asi solvente. Es problable que algo hice que produjo esa falla, por otra parte me gustaria saber el porque el with no es recomendable. Gracias de antemano. |
#12
|
||||
|
||||
Pues tienes un ejemplo muy claro en tu código:
Ese "Close", puede referirse a FDQCategoria.close o a form.close, no está claro y puedes encontrarte sorpresas.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
|||
|
|||
Lo anterior cierra el dataset Modulo.DMBox.FDQCategoria. Lo anterior también cierra el dataset Modulo.DMBox.FDQCategoria.
El método ExecSQL no abre un dataset, solo ejecuta la instrucción SQL definida. Suponiendo que el dataset al cual le estás haciendo Refresh es Modulo.DMBox.FDQCategoria no hay forma de que esté activo, pues no solo lo cierras explicitamente varias veces sino que ademas cambias la instruccion sql a Insert o Update lo que bajo ninguna circunstancia abre un dataset. Por otra parte, suponiendo que el dataset al cual le haces Refresh NO es Modulo.DMBox.FDQCategoria, quizás el problema te lo esté generando la instrucción Commit, particularmente si la base de datos es Interbase o Firebird. En estas dos bases de datos una instrucción Commit, o Rollback, no solo finaliza la transacción sino que además se cierran todos los dataset asociados a la transacción, por lo que muchos programadores hacen uso de la instrucción CommitRetaining para solventar esta dificultad. |
#14
|
||||
|
||||
Pues eso, entre el lo que se supone que hace lo que hay dentro del with y el resto de suposiciones... no hay nada claro.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 Token | MALBOTO22 | PHP | 8 | 06-05-2015 20:22:39 |
Refrescar una Query | oca | Firebird e Interbase | 0 | 27-01-2005 23:34:32 |
Refrescar un query para un DBGrid | neon | OOP | 4 | 19-08-2004 18:06:39 |
Error en Query | silviodp | Conexión con bases de datos | 11 | 30-07-2004 16:58:52 |
Como Refrescar un Query | sitrico | SQL | 6 | 02-07-2004 22:40:35 |
|