![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Estas editando o grabando? en tu codigo veo un EDIT pero no un APPEND o INSERT
Pon un stop (puntito rojo) antes de llegar a POST para revisar que pasa después de entrar. |
#2
|
|||
|
|||
Se trata de una aplicación local, no debe correr en la red por eso no e manejado transacciones, la pregunta es de por que no se graban los datos en la tabla, de hecho si edito el DBGrid sucede lo mismo cuando salgo del programa y vuelvo a entrar los datos no quedaron de forma permanente, no se si me falte configurar algo pero le e buscado tanto en la configuración de la tabla como en el dataset e incluso en el DBGrid y no encuentro el problema.
De echo si analizas el código es en realidad algo muy simple se entra en ciclo while y se lee de forma secuencial el archivo de eventos, se localiza el correspondiente registro en el maestro se toman los datos a modificar y luego pongo la tabla del maestro en modo de edición asigno los valores y mando post, después tengo un ciclo para guardar de forma permanente cada 50 registros aplicando update y commit, al finalizaar el while vuelvo a aplicar update y comit para no dejar ningún registro sin procesar. gracias por el aviso ya estoy viendo como dar formato a mis mensajes |
#3
|
|||
|
|||
Problema: Los cambios realizados en un DBGrid no se graban en la tabla.
El problema de que los cambios realizados en un DBGrid no se guarden en la tabla puede deberse a varios factores. Aquí te dejo algunos puntos clave para revisar y posibles soluciones: 1. Dataset no está en modo edición Asegúrate de que el Dataset (por ejemplo, TQuery, TTable, TClientDataset, etc.) esté en modo de edición cuando realizas cambios a través del DBGrid. Si no lo está, los cambios no se reflejarán en la base de datos. Para poner el Dataset en modo edición, usa algo como: Código:
if (!DataSource1->DataSet->Active) return; // Asegúrate de que el DataSet esté activo DataSource1->DataSet->Edit(); // Pone el dataset en modo de edición Cuando terminas de editar una fila en el DBGrid, necesitas aplicar los cambios al dataset. Esto generalmente se hace llamando a Post: Código:
DataSource1->DataSet->Post(); 3. Verifica el modo de conexión Si estás usando una conexión a una base de datos a través de TQuery o TTable, asegúrate de que el dataset esté configurado para permitir ediciones. Revisa la propiedad ReadOnly de tu DataSet (asegúrate de que esté en false), y que la consulta SQL permita actualizaciones. Para tablas o consultas, asegúrate de que la consulta SQL sea modificable (por ejemplo, evita usar combinaciones JOIN que hagan la tabla de solo lectura). 4. Propiedad AutoEdit del DataSource Si la propiedad AutoEdit de tu DataSource está en false, el DBGrid no pondrá el dataset en modo de edición automáticamente cuando comiences a editar una celda. Asegúrate de que la propiedad AutoEdit de tu DataSource esté en true: Código:
DataSource1->AutoEdit = true; Asegúrate de que el usuario que está accediendo a la base de datos tenga permisos para realizar operaciones de escritura (insertar/actualizar/eliminar). 6. Transacciones pendientes Si estás usando transacciones, asegúrate de que la transacción se haya confirmado (Commit) después de la edición. De lo contrario, los cambios no se reflejarán en la base de datos: Código:
DataSource1->DataSet->Post(); // Aplica los cambios Database1->Commit(); // Confirma la transacción Revisa los eventos del DBGrid o del DataSet (BeforePost, OnPostError, etc.) para asegurarte de que no haya código que cancele el guardado o que no esté aplicando los cambios. Resumen: - Asegúrate de que el Dataset esté en modo de edición. - Usa Post para guardar los cambios. - Verifica que AutoEdit esté habilitado. - Revisa permisos de escritura y transacciones pendientes. - Verifica que no haya validaciones o cancelaciones que interfieran. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Chequear y hacer Cambios en Base de Datos Firedac + Firebird 3 | amadis | Conexión con bases de datos | 12 | 22-11-2022 19:30:51 |
Grabar datos desde ListView a Tabla Firebird. | Camilo | OOP | 4 | 21-06-2019 19:36:32 |
Firedac y tabla temporal Mysql | lbidi | Conexión con bases de datos | 3 | 21-02-2018 19:47:54 |
actualizar datos desde otra tabla firebird 2.1 | shaymon325 | Firebird e Interbase | 5 | 08-05-2012 04:43:12 |
Como actualizo datos en una tabla Firebird | jafera | Firebird e Interbase | 3 | 16-01-2012 17:45:08 |
![]() |
|