FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
Cita:
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
||||
|
||||
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
__________________
"Lo mejor de no saber hacer nada es que se tiene mucho tiempo libre."
|
#6
|
||||
|
||||
jeje, ¿se nota que yo estaba liado con los eventos cuando respondí? que bah
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|