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.
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.