Hola amigos, ye he trabajado durenta muchos años (ya perdí la cuenta creo que son 10) primero con interbase 4 (creo que ese era el que usaba en mi 486dx4) subiendo hasta el 6 open source desde delphi 3 hasta delphi 2005 y luego con firebird, usando el BDE, IBX, FIB, etc. Jamas en mi vida habia escuchado que se pierden datos y este hilo en mi opinion se salio de curso.
Creo que el fin de un foro es encontrar soluciones y dar opiniones y no atacar a tal o cual componente o tal o cual razón.
Si alguien tiene un problema ayudemos a resolverlo, pero el que pregunta POR MUY desesperado que este debe dar mas detalles del problema, sino solo podermos adivinar.
Concejo:
- No uses CommitRetaining cada vez que introduces un registro estas consumiendo tu ancho de banda que da gusto (la cabecera de los paquetes que van por la red se repite y tamaño del paquete es por lo general fijo y por lo tanto si lo mandas medio vacio estas desperdiciando tu ancho de vanda)
- Si deseas hacer usar CommitRetaining entonces prueba este codigo en el OnCloseQuery de la ventana principal
Código Delphi
[-]
procedure TW_Principal.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
desconectar_bd;
end;
procedure TW_Principal.desconectar_bd;
var i:Integer;
begin
for I:=0 TO MD_BD_TRANS.BD.TransactionCount-1 DO
BEGIN
if MD_BD_TRANS.BD.Transactions[i].InTransaction then
begin
MD_BD_TRANS.BD.Transactions[i].Commit;
end;
END;
MD_BD_TRANS.BD.Connected:=false;
end;
Espero te sirva.
Adios