PDA

Ver la Versión Completa : problema con programa remoto


JAI_ME
14-01-2012, 03:56:26
tengo un programa que lo tenia funcionando local y funciona perfecto, uso delphi 6 y firebird como motor de base de datos,
la cuestión es que cuando intento colocarlo en red, cambio el uso de DM.IBTransaction1.CommitRetaining por DM.IBTransaction1.Commit para que los otros usuarios puedan ver los cambios que hicieron sobre la base de datos cada uno, el problema es que en una de las ventanas tengo un dbgrid con una consulta y cuando hago el commit se pierde la información de este y me obliga a ejecutar nuevamente esa consulta.

me dan alguna sugerencia de trabajar con una aplicación en red.

Casimiro Notevi
14-01-2012, 10:36:26
Creo que necesitas leer el documento "maestro" sobre transacciones, aquí lo tienes (http://www.intitec.com/varios/transacciones-0.2.6.pdf), a ver si te sirve.

JAI_ME
14-01-2012, 18:11:29
gracias casimiro por la respuesta he leido este manual muy interesante pero sigo con el problema, me ayudan a solucionar el problema ?

AzidRain
14-01-2012, 18:28:14
En el manual que te puso casimiro está la solución, si realmente lo leíste ya debiste haber encontrado el problema. No se trata de buscar respuestas directas, pues es obvio que nunca has trabajado con aplicaciones cliente-servidor por lo que creo que tienes que ponerte a estudiar bastantito sobre el tema, no solo transacciones sino muchos otros conceptos que en aplicaciones de "escritorio" no se utilizan pero que en entornos de red es indispensable conocer para no atorarse en problemas como el que te sucede.

JAI_ME
14-01-2012, 18:41:39
gracias de todas sus respuestas, quizás tuve la solución en mis narices y no me di cuenta, este tema es de tiempo y estudio con los cuales no cuento en el momento, seria posible me dieran una solución mas precisa, ya que esta aplicacion debo entregarla el lunes a primera hora.

gracias

Caminante
14-01-2012, 19:04:08
Si quieres una respuesta rapida, pues sigue usando commitretaining pero eso traera sus consecuencias. Al usar commit los cursores se cierran por lo que deberas volver a abrir los datasets. Te sugiero analices mejor las respuestas anteriores.

Saludos

JAI_ME
14-01-2012, 19:15:33
si el inconveniente del commitretaining es que si hay dos usuarios conectados sobre la misma tabla y ambos van a hacer actualizaciones sobre la misma, ninguno vera lo que ha realizado el otro hasta que no cierren la transacción mediante el commit, o rollback esto ultimo lo aprendi en el manual. cada usuario al entrar al sistema crea una transaccion esta tiene un TID y a medida que hay mas usuarios sera incrementado este ID, la cuestión es que hay que cerrar estas transacciones y al hacer esto me borra los dbgrid ya que obviamente cierra la transacción y debo crear otra para mostrar la información en dicho dbgrid, esto me afecta el rendimiento ya que demora un poco de tiempo en la creación de la nueva transacción.

caso contrario del commitretaining.