PDA

Ver la Versión Completa : No se bloquea registro accedido por dos usuarios


Tomás
05-10-2004, 19:41:28
Hola:

Tengo una aplicación (D7, InterBase 6, IBX) en mi ordenador (Ord.A, monopuesto) que intento que funcione también desde otro (Ord.B conectado en red al mio).

Para ello cambio:

DM.IBDB.DatabaseName := 'C:\Temp\Alumnos\TDALUMNOS.GDB';

por

DM.IBDB.DatabaseName := 'despacho.:C:\Temp\Alumnos\TDALUMNOS.GDB';

Conecta bien, pero al hacer un experimento (La Cara Oculta... pág 628) para ver que se bolquea un registro al ser accedido por los dos, no funciona adecuadamente.

- Abro la aplicación desde los dos ordenadores: Ord.A y Ord.B

- Desde el A edito el primer registro pero no confirmo la edición

- Desde B edito el mismo registro y confirmo la edición.

- Vuelvo a A y confirmo la edición, debería haber un mensaje indicando que no se puede realizar la edición porque otro usuario lo ha editado, pero no sale ningún mensaje y queda modificado según el ordenador A.

¿Qué es lo que hago mal? ¿Cómo se evita esto? ¿Tengo que hacer algo más?

La edición la hago con un botón editar y otro que confirma:

procedure TFDatos.FormCreate(Sender: TObject);
begin
//conectar base de datos, transación, dataset
DM.IBDB.DatabaseName := 'despacho.:C:\Temp\Alumnos\TDALUMNOS.GDB';
DM.IBDB.Connected := True;
DM.IBT.Active := True;
DM.IBDSAlumnos.Active := True;
//situarse en página tabla
PCAlumnos.ActivePage := TSTabla;
end;

procedure TFDatos.BBModificarClick(Sender: TObject);
begin
//modificar registro situándose en página ficha
DM.IBDSAlumnos.Edit;
PCAlumnos.ActivePage := TSFicha;
end;

procedure TFDatos.BBAceptarClick(Sender: TObject);
begin
// aceptar cambios
DM.IBDSAlumnos.Post;
DM.IBT.CommitRetaining;
//ir a página tabla
PCAlumnos.ActivePage := TSTabla;
end;


¿Alguna idea? ¿Necesitareis más detalles de la conexión?

** Es la primera vez que intento hacer algo multipuesto.

Un saludo. Tomás.