unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, StdCtrls, IBConnection, sqldb, DB, BufDataset;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
procedure DoPostError(DataSet: TDataSet; E: EDatabaseError; var DataAction: TDataAction);
procedure DoApplyUpdateError(Sender: TObject; DataSet: TCustomBufDataset; E: EUpdateError;
UpdateKind: TUpdateKind; var Response: TResolverResponse);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.DoPostError(DataSet: TDataSet; E: EDatabaseError; var DataAction: TDataAction);
begin
ShowMessage('my error in Post');
DataAction := daAbort;
end;
procedure TForm1.DoApplyUpdateError(Sender: TObject; DataSet: TCustomBufDataset; E: EUpdateError;
UpdateKind: TUpdateKind; var Response: TResolverResponse);
begin
ShowMessage('my error in ApplyUpdate');
Response := rrAbort;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
IB: TIBConnection;
SQL: TSQLQuery;
begin
IB := TIBConnection.Create(nil);
SQL := TSQLQuery.Create(nil);
try
IB.Transaction := TSQLTransaction.Create(IB);
IB.Transaction.DataBase := IB;
IB.DatabaseName := 'c:\temp\test2.fbd';
IB.HostName := 'localhost';
IB.UserName := 'SYSDBA';
IB.Password := 'masterkey';
try
IB.Connected := True;
except
on E: EDatabaseError do
begin
IB.CreateDB;
IB.Connected := True;
IB.ExecuteDirect('CREATE TABLE NAME(ID BIGINT PRIMARY KEY);');
if TSQLTransaction(IB.Transaction).Active then
TSQLTransaction(IB.Transaction).Commit;
end;
end;
SQL.OnPostError := @DoPostError;
SQL.OnUpdateError := @DoApplyUpdateError;
SQL.Database := IB;
SQL.Transaction := IB.Transaction;
SQL.SQL.Text := 'SELECT * FROM NAME';
SQL.Open;
SQL.Last;
Button1.Caption := IntToStr(SQL.RecordCount);
SQL.Insert;
SQL.FieldByName('ID').AsInteger := 1;
try
SQL.Post;
SQL.ApplyUpdates;
except
Showmessage('woops. dit kan natuurlijk ook');
end;
SQL.Close;
if TSQLTransaction(SQL.Transaction).Active then
TSQLTransaction(SQL.Transaction).Commit;
finally
IB.Free;
SQL.Free;
end;
end;
end.
Bookmarks