FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Cita:
Retomo el hilo, ¿a qué te refieres con lo de prueba aislada? ¿os mando paso a paso pantallazos o algo así? Un saludo. |
#2
|
||||
|
||||
Un nuevo programa con lo mínimo necesario para reproducir el error en la computadora de quien desee descargarlo para ver de cerca el problema. "Aislando" (separando) el problema de todo lo demás que contenga tu aplicación.
Saludos. |
#3
|
|||
|
|||
Buenos días,
Parece que lo he resuelto a la tremenda, si cierro la conexión a la bbdd y la vuelvo a abrir, todo funciona. |
#4
|
|||
|
|||
Tengo el mismo problema
Hola a todos, te escribo porque me gustaría que compartieras tu solución. entiendo que cierras la conexión a la db pero en que momento la cierras y en que momento la vuelves abrir. también me gustaría saber si es lo único que modificas o si modificas algo mas de los demás componentes. tengo el mismo problema y me gustaría solucionarlo. espero su respuesta. muchas gracias. Yo utilizo postgresql y delphi 7. Tengo un dataSource enlazado al query y este a la conexión.
|
#5
|
|||
|
|||
Transacciones
Entiendo que hay un problema de transacciones. No puedo asegurarlo sin tener más información.
Cuando se ejecuta el método ApplyUpdate del ClientDataSet los datos originales (los que se obtuvieron de la base de datos) y las modificaciones se empaquetan y se pasan al DataSetProvider. Dependiendo de su configuración, el DataSetProvider puede aplicar los cambios de dos formas: generando sentencias INSERT, UPDATE y DELETE (lo que hace por defecto) o actualizando los DataSet usados para obtener los datos. Asumo que la configuración del DataSetProvider no se ha modificado y se están generando sentencias INSERT, DELETE y UPDATE. En el proceso que aplica los cambios se verifica si ya hay una transacción activa. Si la hay entonces no se hace StartTransaction ni Commit. Si no la hay entonces se hace StartTransaction y luego Commit. Está claro que en este caso hay una transaccíon activa y, si bien los cambios son aplicados en la base de datos, no son visibles fuera del contexto de la transacción activa. Al cerrar la conexión con la base de datos, y esto también depende de la configuración, la transacción activa es finalizada automáticamente con Commit. Lo más probable es que sea el propio DataSetProvider el que inicia la transacción y la mantenga activa. Cuando el DataSetProvider no le pasa todos los registros disponibles al ClientDataSet (esto depende de la propiedad PacketRecords del ClientDataSet) entonces el DataSet que usa el DataSetProvider para obtener los datos permanece activo y su transacción asociada también. Para solucionarlo de una forma más elegante (en vez de cerrar la conexión con la base de datos para forzar un Commit) me tienes que decir qué tecnología de acceso a datos estás usando. De todas formas creo que es una buena práctica usar dos transacciones (si se puede) o dos conexión con la base de datos: una de sólo lectura para mostrar registros y otra de lectura y escritura para modificarlos. Espero que sea de ayuda. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
actualizar base de datos desde dbgrid | edgar_prospero | Varios | 36 | 31-08-2012 02:27:34 |
DBGrid. Al actualizar los datos 'No pude encontrar la fila para su actualizacion' | juliannemiro | Varios | 2 | 02-02-2012 04:30:02 |
Actualizar datos con TQuery sin mover dbgrid | odrack | Varios | 2 | 13-02-2009 19:53:03 |
actualizar datos mediante un dbgrid | chass | Varios | 2 | 28-07-2008 23:01:59 |
¿Cómo puedo actualizar en el DBGrid los datos que inserto en la misma sesión? | nuri | SQL | 3 | 18-07-2005 18:27:19 |
|