Table Data Comparer FireBird via FireDAC

 
This example shows how to synchronize a FireBird database tables via FireDAC.
 
 
procedure TForm2.btnCompareClick(Sender: TObject);
begin
  memResult.Lines.Clear;

  TableDataComparer1.TableNameMaster := edtTableNameM.Text;
  TableDataComparer1.TableNameTarget := edtTableNameT.Text;

  DBCConnectionM.Connected := True;
  DBCConnectionT.Connected := True;
  try
    if TableDataComparer1.CompareData() then
    begin
      memResult.Lines.BeginUpdate();
      IBSQLExec1.GetScript(memResult.Lines);
      memResult.Lines.EndUpdate();
    end;
  finally
  DBCConnectionT.Connected := False;
  DBCConnectionM.Connected := False;
  end;

  memLog.Lines.Add('<Compare Finished>');
end;

procedure TForm2.btnUpdateClick(Sender: TObject);
begin
  TableDataComparer1.SQLExec.ExecuteScript();
end;
 
procedure TForm2.DBCConnectionMBeforeConnect(Sender: TObject);
begin
  FDPhysFBDriverLink1.VendorLib := edtClientLibrary.Text;

  FDConnection1.Params.Clear();
  FDConnection1.DriverName := 'FB';
  FDConnection1.Params.Add('Database=' + edtMasterDbName.Text);
  FDConnection1.Params.Add('TableNameM=' + edtTableNameM.Text);
  FDConnection1.Params.Add('User_Name=' + edtMasterUser.Text);
  FDConnection1.Params.Add('Password=' + edtMasterPassword.Text);

  IBSQLExec1.IBServerOptions.SQLServerVersion :=
    TIBSQLServerVersionType(cbSqlServerVersion.Items.Objects[cbSqlServerVersion.ItemIndex]);
end;

procedure TForm2.DBCConnectionTBeforeConnect(Sender: TObject);
begin
  FDPhysFBDriverLink1.VendorLib := edtClientLibrary.Text;

  FDConnection2.Params.Clear();
  FDConnection2.DriverName := 'FB';
  FDConnection2.Params.Add('Database=' + edtTargetDbName.Text);
  FDConnection2.Params.Add('TableNameT=' + edtTableNameT.Text);
  FDConnection2.Params.Add('User_Name=' + edtTargetUser.Text);
  FDConnection2.Params.Add('Password=' + edtTargetPassword.Text);

  IBSQLExec1.IBServerOptions.SQLServerVersion :=
    TIBSQLServerVersionType(cbSqlServerVersion.Items.Objects[cbSqlServerVersion.ItemIndex]);
end;

 
procedure TForm2.FormCreate(Sender: TObject);
begin
  cbSqlServerVersion.Items.Clear();

  cbSqlServerVersion.Items.AddObject('Firebird 1.5', TObject(st_FireBird_15));
  cbSqlServerVersion.Items.AddObject('Firebird 2.0', TObject(st_FireBird_20));
  cbSqlServerVersion.Items.AddObject('Firebird 2.1', TObject(st_FireBird_21));
  cbSqlServerVersion.Items.AddObject('Firebird 2.5', TObject(st_FireBird_25));
  cbSqlServerVersion.Items.AddObject('Firebird 3.0', TObject(st_FireBird_30));

  cbSqlServerVersion.ItemIndex := cbSqlServerVersion.Items.Count - 1;
end;

Add Feedback