Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Duda con Fibplus (https://www.clubdelphi.com/foros/showthread.php?t=18252)

Delphos 07-02-2005 13:12:46

Duda con Fibplus
 
Hola foro hace tiempo me pusieron estos ejemplos de codigo para hacer unas consultas atraves de Fibplus:

Código:

//Consulta de Inserccion con FIBDataSet
procedure TForm1.Button1Click(Sender: TObject);
 Var
  SQL : String;
begin
 
  SQL:='INSERT INTO Tabla (Campo1,Campo2,Campo3,Campo4) VALUES (:Parametro1,:Parametro2,:Parametro3,:Parametro4)';
 
    If pFIBTransaction1.InTransaction then
      pFIBTransaction1.Commit;
    pFIBTransaction1.StartTransaction;
    pFIBDataSet1.InsertSQL.Clear;
    pFIBDataSet1.SQLs.InsertSQL.Add(SQL);
    pFIBDataSet1.QInsert.ParamByName('Parametro1').AsString := Edit1.Text;
    pFIBDataSet1.QInsert.ParamByName('Parametro2').AsString := Edit2.Text;
    pFIBDataSet1.QInsert.ParamByName('Parametro3').AsString := Edit3.Text;
    pFIBDataSet1.QInsert.ParamByName('Parametro4').AsString := Edit4.Text;
    pFIBDataSet1.QInsert.ExecQuery;
    pFIBTransaction1.Commit;
 
end;


//Consulta de Eliminacion con pFIBQuery
procedure TForm1.Button2Click(Sender: TObject);
 var
  SQL: String;
begin
 
  SQL:='DELETE FROM Tabla WHERE Campo_a_eliminar = :Parametro1;

  if pFIBTransaction1.InTransaction then
        pFIBTransaction1.Commit;
    pFIBTransaction1.StartTransaction;
    pFIBQuery1.SQL.Clear;
    pFIBQuery1.SQL.Add(SQL);
    pFIBQuery1.Params[0].Value:= Parametro1; //Tambien se puede utilizar ParamByName
    pFIBQuery1.ExecQuery;
    pFIBTransaction1.commit;
 
end;
 
// FIBDataSet (RecordSet)
  Form1.ListBox1.Clear;
  Form1.pFIBDataSet1.Open;
  Form1.pFIBDataSet1.First;
  While not Form1.pFIBDataSet1.Eof do
  begin
  Form1.ListBox1.Items.Add(Form1.pFIBDataSet1.FieldValues['Campo1'] + ' - ' +
                      Form1.pFIBDataSet1.FieldValues['Campo2'] + ' - ' +
                      Form1.pFIBDataSet1.FieldValues['Campo3'] + ' - ' +
                      Form1.pFIBDataSet1.FieldValues['Campo4']);
  Form1.pFIBDataSet1.Next;
  end;
 
  Form1.pFIBDataSet1.Close;
 
end;

mi confucion viene con las dos primeras lineas de los codigos y cual seria el comportamiento de FireBird en esta situacion.

Código:

if pFIBTransaction1.InTransaction then
  pFIBTransaction1.Commit;
  pFIBTransaction1.StartTransaction
  ..................................
  .......Modificando DB.............
  ........................................

me explico: lo primero que se hace es preguntar si hay una transaccion y si la hay se le da commit, aqui mi confucion; si hay una trasaccion ejecutando varios cambios en la DB y esta no ha terminado los cambios ¿no estoy forzando a terminar la transaccion con este commit? por que eso es lo que parece como si estuviera formazando a terminar la transaccion. Otra cosa:
tenia entendido que FireBird creaba transacciones siempre ya sean estas implicitas o explicitas.

Salu2.


La franja horaria es GMT +2. Ahora son las 04:28:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi