![]() |
manipular la misma base de datos en la misma pc
hola a todos
Tabajo en una aplicacion y tengo mi base de datos en FIREBIR 2.0 mi problema es que necesito abrir en la misma pc la misma aplicacion, pero los cambios se reflejan bien en la primera aplicacion que abro y puedo trabajar muy bien, y cuando trabajo con la misma aplicacion que abri por segunda vez no se reflejan los cambios que hice en la primera. es decir en la aplicacion que abro por 1Ra. vez si puedo crera factura y me va actualizando los datos, el problema es cuando intento crear el folio de otra factura en el formulario que abri por 2da. vez no me busca el ultimo folio grabado en el primer formulario que abri, por lo que me duplica el folio de que leyo al momento de entrar. el punto es como le hago para que mi formulario abierto por segunda vez me busque los registros actualizados por el mismo formulario que abri primero?? cual es la tecnica. gracias de antemano |
bueno y cuando guardas la factura si le das commit a la transaccion??
|
Hola,
Para que te podamos ayudar, sería interesante que comentes qué componentes estás utilizando, para la conexión, querys, transacciones, etc. Así como lo cuentas, tiene pinta de que el problema se puede encontrar en la configuración del nivel de aislamiento de la transacción. Un saludo. |
Cita:
Lo que comentas parece el funcionamiento habitual en firebird, las transacciones no se ven entre si mientras no se aplican efectivamente. |
abrir la misma aplicacion en la misma pc
Gracias a todos.
En algunas aplicaciones ya hechas que se comercializan he visto que en los sistemas administrativos pueden abrir la misma aplicacion varias veces al mismo tiempo digamos, esto permite relizar otra actividad mientra se tiene otra actividad a medias. En mi aplicacion me gustaria hacer los mismo abrir varias veces la segun la necesidad. Cuando abro la aplicacion la primera vez puedo realizar toda mi actividad de factura pero en la otra que tengo abierta tambien no puedo llamar los ultimos cambios que relizo en la primera abierta. En mi aplicacion utilizo los componentes un Ibdatabase, IbTransaccion, StorePRoc el cual estan contenidos en un modulo y en el formulario de factura utilizo componentes ClientDataset para almacenar datos en memoria y finalmente los guardo fisicamente con un AppliUpdate(0). todo esto me funciona muy bien cuando trabajo como unico usuario es decir cuando abro una vez el programa, pero si lo vuelvo abrir al mismo tiempo, en este segundo tiempo es cuando no me refleja los cambios. Aunque por ahi leei un poquito sobre el uso del componente SESIONES pero no se si sea lo correcto. me gustaria que me orienten que debo hacer. de antemano gracias |
Hola DELFIN2000,
Ciertamente, la mayoría de programas de gestión permiten multi-sesión y lo que es más normal: uso compartido en grupos de trabajo, en Red. Para ambos casos es lo mismo, varios usuarios (o instancias) que comparten datos en la base de datos. Tal y creo que tan solo puede ser por dos motivos: 1.- Si en la primera instancia que levantas no has echo el ApplyUpdate correspondiente. En este caso es lógico que en la segunda instancia no se vean los datos. 2.- Nivel de aislamiento en ibTransaction. Según que nivel de aislamiento tengas configurado, se comparten los datos o no, entre las conexiones abiertas en la base de datos. En este último caso, prueba a hacer doble clic en el ibTransaction y le marcas la opción Read_Commited, Quedando los parámetros (settings o propiedad params de la transacción) de la transacción de la siguiente forma: Código:
read_committed Un saludo. |
Resuelto el problema de abrir varias instancias
Gracias DonalShimoda y Manuc
Efectivamente Cambie los parametros del componente Transaccion dejandolos en: Read_Commited E hice un Commit despues de ApplyUpdate(0) y ya me funciona bien. seguire avanzando pk estoy a media. Tengo otra duda?? Para que funcione en red, es necesario usar componente Tsesion? o basta con instalar el cliente de faribird en las terminales y usando la configuracion que resolvi con Uds. Gracias y que el creador les multiplique la sabiduria |
Hola,
Si los clientes acceden directamente a base de datos, bastará con instalar Firebird Client. Creo que con que el exe cliente tenga accso a gds32.dll o fbClient.dll, será suficiente. Si utilizas ClientDataset, también es probable que tengas que registrar el Midas.dll, o por lo menos que el Software que actúe como cliente tenga acceso a este fichero. Un saludo. |
Cita:
Saludos |
Sí, correcto, llevas razón.
Creo que añadiendo MidasLib en los uses embebes la dll en el ejecutable. Se me había pasado. Gracias. Un saludo. |
nuevamente agradezco sus respuestas.
checare sus indicaciones y cualquier duda estare molestandolos pronto. saludos. |
La franja horaria es GMT +2. Ahora son las 13:00:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi