Ver Mensaje Individual
  #7  
Antiguo 27-11-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Otro consejo o regla que deberías seguir:

Las transacciones deben ser lo más cortas posibles.

Por lo tanto,
- Cada form debería tener una transaccion independiente.
- Cada listado debería tirar de un query con su propia transaccion.
- Si necesitas buscar algún dato deberías hacerlo abriendo y cerrando la transacción inmediatamente.

Por lo tanto:
- Deberías tener un DataModule principal con el componente de base de datos
- Cada Form debería tener su DataModule con una transaccion unida a la base de datos del DataModule principal
- Para consultas aisladas yo hago lo siquiente:
Código Delphi [-]
function Form1.DameCantidadDato: Integer;
var
  q: TFibQuery;
begin
  q := TFibQuery.Create(Self);
  try
    q.Database    := DMMain.Database;
    q.Transaction := TFibTransaction.Create(Self); {Crea transaccion}
    q.Transaction.DefaultDatabase := DMMain.Database;
    q.Transaction.StartTransaction; {Empieza transaccion}
    q.SQL.Text := 'SELECT COUNT(*) FROM TABLA';
    q.ExecQuery;
    Result := q.FieldByName['COUNT'].AsInteger;
  finally
    q.Transaction.Free; {Termina transaccion}
    q.Free;
  end;
end;

Última edición por duilioisola fecha: 27-11-2007 a las 11:54:04.
Responder Con Cita