Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas Guardando Info en Firebird (https://www.clubdelphi.com/foros/showthread.php?t=54796)

wonder boy 31-03-2008 15:36:20

Problemas Guardando Info en Firebird
 
Hola amigos, espero que el titulo se entienda, sino avisenme por favor, bueno uso D7 + Firebird 1.5, el server es W2003 y la PC del problema tiene WinMe, aunque descarto problemas con el ME porque tambien me a surgido el problema con XP y 98, bueno, resulta que ingreso comprobantes en un formulario, luego hago consultas y chequeo que la info se haya guardado correctamente. Resulta que vengo al otro dia y no esta nada de lo que he ingresado. Alguien ha tenido algun problema similiar??,

HELP !!!!!!

iuqrul 31-03-2008 15:51:41

No tengo muy claro tu problema, pero ¿qué tipo de transacciones usas?, ¿haces commit?, ¿apagas la aplicación una vez al día?

wonder boy 31-03-2008 15:58:44

Problemas Guardando Info en Firebird
 
¿qué tipo de transacciones usas?
no uso transacciones, uso directamente applyupdates, por tanto no uso committransaction, lo que ingreso es un registro simple. no me da error. siempre verifico que el ApplyUpdates(0) me devuelva 0, sino provoco un error con raise.
¿apagas la aplicación una vez al día?
si, se apaga la Pc una vez al dia

pd: lo que me sorprende, es que se tiran informes con la info ingresada, y al otro dia no hay NADA, es un solo lugar del sistema donde me pasa, es en varios clientes donde pasa. con lo que deduzco que el problema es SI o SI algo del programa.

Gracias por contestar!!!, MORE HELP!!!

iuqrul 31-03-2008 16:14:34

Que componentes usas ¿IBX? ¿IBObjects?, me imagino que IBX, recordamos ApplyUpdates:

Código Delphi [-]
Writes a dataset’s pending cached updates to the database.

Delphi syntax:

procedure ApplyUpdates;

C++ syntax:

void __fastcall ApplyUpdates(void);

Description

Call ApplyUpdates to write a dataset’s pending cached updates to
a database. This method passes cached data to the database for
storage, but the changes are not committed to the database.
An application must explicitly call the TIBTransaction component’s
Commit method to commit the changes to the database if the write
is successful, or call the TIBTransaction component’s Rollback
method to undo the changes if there is an error.

Note:    The preferred method for updating datasets is to call a
database component’s ApplyUpdates method rather than to call each
individual dataset’s ApplyUpdates method. The application is
responsible for committing or rolling back the transaction.

Es OBLIGATORIO hacer commit/rollback, de forma explícita antes de cerrar la transacción (en tu caso lo hace el programa al cerrarse), para que los cambios se queden permanentes en la base de datos.

wonder boy 31-03-2008 16:50:10

No, no uso IBX uso DBXpress, al cliente le hago ApplyUpdates y normalmente me deja todo bien. el problema es muy de vez en cuando, pero los usuarios me dicen que no hay error, solo pasa eso, al otro dia vuelven y no hay nada. La verdad es que estoy desesperado y a la vez desespernzado con el amigo DBXpress y Firebird, aunque no se bien a que echarle la culpa :(

Gracias por tu respuesta!

enecumene 31-03-2008 17:13:45

Hola WonderBoy, es como dice el compañero iuqrul, debes hacer el commit/rollback de lo contrario no se te grabaran fisicamente sino se quedan n memoria, a menos que estes usando un MemoryData o algo por el estilo.

Saludos.

wonder boy 31-03-2008 22:22:01

Hola Enecumene!!, quisiera realmente que la solucion fuera esa, un Commit, pero lamentablemente, en todo el sistema lo uso de esta manera (ApplyUpdates) y anda perfectamente, yo no inicio ninguna TTRansactionDesc para guardar los cambios, por tanto deberia (como lo hace el % 99,99 de las veces), guardarme los datos sin ningun tipo de problemas. Ademas si yo salgo del formulario, el TclientDataSet en el cual guarde los datos se cierra, esto deberia desencadenar un CANCELUPDATES, por tanto saliendo del formulario, los cambios deberian perderse. Esto no pasa, los cambios estan, se tiran informes con los datos ingresados, de hecho, es la unica forma que tenemos de saber que se ingresaron, antes desconfiabamos de que los usuarios los eliminaban, pero no....

pd: normalmente los cambios se guardan, pasa muy de vez en cuando. Uso D7 + DBX + Firebird 1.5


La franja horaria es GMT +2. Ahora son las 01:37:27.

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