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)
-   -   manipular la misma base de datos en la misma pc (https://www.clubdelphi.com/foros/showthread.php?t=69026)

DELFIN2000 21-07-2010 18:20:07

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

luisgutierrezb 21-07-2010 19:28:01

bueno y cuando guardas la factura si le das commit a la transaccion??

manuc 22-07-2010 11:17:26

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.

donald shimoda 22-07-2010 16:30:38

Cita:

Empezado por DELFIN2000 (Mensaje 371069)
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

Estas realizando un commit en la primera transacción? Estas iniciando una nueva transacción en la segunda lectura.


Lo que comentas parece el funcionamiento habitual en firebird, las transacciones no se ven entre si mientras no se aplican efectivamente.

DELFIN2000 23-07-2010 07:06:14

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

manuc 23-07-2010 09:16:06

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
rec_version
nowait

Espero que te ayude.

Un saludo.

DELFIN2000 23-07-2010 13:16:28

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

manuc 23-07-2010 13:23:28

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.

donald shimoda 23-07-2010 13:40:35

Cita:

Empezado por manuc (Mensaje 371320)
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.

Dependiendo de la version de delphi (creo que en posteriores a D7 solamente) puedes agregar midad a la clausula uses y se linkea estaticamente sin necesidad de registrar ni copiar la dll midas en tus instalaciones.

Saludos

manuc 23-07-2010 13:53:47

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.

DELFIN2000 23-07-2010 18:34:28

nuevamente agradezco sus respuestas.

checare sus indicaciones y cualquier duda estare molestandolos pronto.

saludos.


La franja horaria es GMT +2. Ahora son las 10:45:17.

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