- Код: Выделить всё
IBConnection.Connected:= true;
точно также ведет себя
- Код: Выделить всё
IBConnection.Open
и отладка не идет дальше, при этом ошибки не выдает.
Версия ОС: Windows 10 Pro 64-bit (1709)
Версия Lazarus: 2.0.0 (до того была 1.8.4 точно такое же поведение)
Версия FPC: 3.0.4
код функции
- Код: Выделить всё
uses Classes, SysUtils, IBConnection, sqldb;
function CreateDB(FileName : string) : boolean;
var
IBConnection : TIBConnection ;
IBTransaction : TSQLTransaction;
IBScript : TSQLScript ;
begin
try
// создаем
IBConnection := TIBConnection .Create(nil);
IBTransaction:= TSQLTransaction.Create(nil);
IBScript := TSQLScript .Create(nil);
// связываем
IBConnection.DatabaseName:= FileName;
IBConnection.CharSet := 'UTF8';
IBConnection.UserName := 'SYSDBA';
IBConnection.Password := 'masterkey';
IBConnection.Transaction := IBTransaction;
IBScript.DataBase := IBConnection;
IBScript.Transaction := IBTransaction;
// подключаемся
IBConnection.CreateDB;
IBConnection.Open;
IBTransaction.StartTransaction;
IBScript.Script.Clear;
IBScript.Script.Add('CREATE GENERATOR GEN_TABLE1_ID;');
IBScript.Script.Add('CREATE TABLE TABLE1 (');
IBScript.Script.Add('ID INTEGER NOT NULL,');
IBScript.Script.Add('FIO VARCHAR(100));');
IBScript.Script.Add('ALTER TABLE TABLE1 ADD PRIMARY KEY (ID);');
IBScript.Script.Add('SET TERM ^ ;');
IBScript.Script.Add('CREATE OR ALTER TRIGGER TABLE1_BI FOR TABLE1');
IBScript.Script.Add('ACTIVE BEFORE INSERT POSITION 0 ');
IBScript.Script.Add('as ');
IBScript.Script.Add('begin ');
IBScript.Script.Add(' if (new.id is null) then ');
IBScript.Script.Add(' new.id = gen_id(gen_table1_id,1); ');
IBScript.Script.Add('end ');
IBScript.Script.Add('^ ');
IBScript.Script.Add(' ');
IBScript.Script.Add('SET TERM ; ^ ');
IBScript.Execute;
IBTransaction.Commit;
// отключаемся
IBConnection.Close;
// удалить
IBScript.Free;
IBTransaction.Free;
IBConnection.Free;
CreateDB:= true;
except
CreateDB:= false;
end;
end;