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)
-   -   Con urgencia necesito ver los mismos registros.. (https://www.clubdelphi.com/foros/showthread.php?t=23041)

mateamargo 05-07-2005 13:06:39

Con urgencia necesito ver los mismos registros..
 
Hola,
Perdón por el título, pero es así el tema:
Tengo que instalar un sistema multiusuario el cual venía probando sin aparentemente ningún problema.
Les cuento tengo un alias definido en el BDE a una base de datos de FIREBIRD 1.5.
Luego tengo un Tdatabase , un TTable y un TDatasource.
El Tdatabase tiene como alias el alias definido en el BDE.
El Ttable tiene como database el Tdatabase y una tabla de dicha base.
El Tdatasource apunta hacia el Ttable donde tengo los datos a visualizar mediante DataControls.
Probando doy de alta, baja, modifico sin problemas el, tema surge cuando lo hago en más de una terminal, por ejemplo doy de alta un registro en una y la otra terminal que tambien tiene abierto el programa que ve la misma tabla no ve dicho registro, por lo tanto si lo quiere ingresar aparece el mensaje de clave duplicada, etc... lo mismo para modificar o en la eliminación de un registro. Como que los datos quedaran en un buffer de la terminal y no se refrescaran en el otro puesto de la red, (no utilizo cacheupdate).
Me podrían dar una mano ?
Realmente estoy perdido en el tema ...
Desde ya muchas gracias.
Saludos
:confused:

Patricio 05-07-2005 13:40:41

hola como andas

yo estoy haciendo un programa en delphi 5 y con interbase, cuando vas a ingresar en las tablas que valor le asignas al campo clave?
usas algun tipo de StartTransaccion y Commit?
Si podes escribi un poco del codigo en forma general en donde te da el error

Saludos

mateamargo 05-07-2005 15:09:23

Ver las transacciones
 
Si uso StartTransaction y Commit, también si no puedo grabar hago un rollback.
El ejemplo es el siguiente.
Tengo dos terminales corriendo el mismo programa, y accediendo a la misma tabla en el mismo momento, en las dos terminales estoy parado en el mismo registro, en una me da de baja el registro y en la otra terminal sigue apareciendo como existente si yo quiero hacer algo con ese registro (modif./eliminar) ahi me aparece un mensaje de error, como puedo hacer para que se "actualizen" los datos en ambas terminales ?
Desde ya muchas gracias por tu tiempo.
Saludos

Lepe 29-10-2005 07:30:36

Cita:

Empezado por mateamargo
Perdón por el título, pero es así el tema:

Si te urge, solicita asistencia técnica para programadores o estudia la tecnología C/S. Un foro desde luego no es lugar de urgencias. Más que nada, porque no sabes cuando se va a conectar alguien que sepa y quiera responderte.


Lo que puedes hacer es registrar un evento en el servidor y cuando se realiza un alta o modificación, lanzar ese evento desde un trigger AFTER insert/update/delete,. Todos los clientes estarán a la espera de ese evento, y realizaran un Refresh sobre el Dataset apropiado.

Puedes usar un MDOEventAlert.

Debes tener un ejemplo basado en ibx en:

C:\Archivos de programa\Borland\Delphi6\Demos\Db\IBX\

Puedes guiarte por él, con MDO se supone que es igual

saludos

lpmlpm 29-10-2005 16:41:00

solo revisa que la transacción que estas usando sea de tipo "read/commited" en ambas terminales, con eso basta para que los cambios que hace una se vean reflejadas en la otra...

Saludos

Lepe 30-10-2005 17:44:54

jeje, ¿se nota que yo estaba liado con los eventos cuando respondí? que bah ;)


La franja horaria es GMT +2. Ahora son las 08:27:28.

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