1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| Function TdmDB.CreateNewDB(Const sName, sUser, sPass: String): Boolean;
Procedure cmd(sLine: String; NewDB: TIBDatabase);
Var
ibt: TIBTransaction;
ibq: TIBQuery;
Begin
ibt := TIBTransaction.Create(nil);
ibq := TIBQuery.Create(nil);
Try
NewDB.DefaultTransaction := ibt;
If Not ibt.InTransaction Then
ibt.StartTransaction;
Try
With ibq Do
Begin
DataBase := NewDB;
Transaction := ibt;
// rs := TResourceStream.Create(HInstance , 'DBTMYCARD', 'RT_RCDATA');
// Try
// SQL.LoadFromStream(rs);
// Finally
// rs.Free;
// End;
SQL.Text := sLine;
Prepare;
ExecSQL;
End;
ibt.CommitRetaining;
Except
ibt.RollbackRetaining;
End;
Finally
ibt.Free;
ibq.Free;
End;
End;
Var
NewDB: TIBDatabase;
// rs: TResourceStream;
Begin
Result := False;
NewDB := TIBDatabase.Create(nil);
Try
//user_name=SYSDBA
//password=masterkey
//lc_ctype=UNICODE_FSS
//sql_role_name=3
{$IFDEF DEBUG}
DeleteFile(ChangeFileExt(sName, '.db'));
{$ENDIF}
NewDB.DatabaseName := ChangeFileExt(sName, '.db');
NewDB.Params.Add('USER ''' + sUser + '''');
NewDB.Params.Add('PASSWORD ''' + sPass + '''');
NewDB.Params.Add('PAGE_SIZE 4096');
NewDB.Params.Add('DEFAULT CHARACTER SET UTF8');
NewDB.CreateDatabase;
Cmd('CREATE TABLE MY_CARD (' + 'ID INTEGER NOT NULL,' + 'DATE_REGISTER TIMESTAMP DEFAULT ''NOW'',' +
'ID_CUSTOMER INTEGER NOT NULL,' + 'SURNAME VARCHAR(255) CHARACTER SET NONE NOT NULL COLLATE NONE,' +
'"NAME" VARCHAR(200) CHARACTER SET NONE NOT NULL COLLATE NONE,' + 'NB_SEANCE INTEGER NOT NULL,' +
'ISUNLIMITED INTEGER NOT NULL,' + 'DATE_EXPIRE TIMESTAMP NOT NULL,' + 'BARCODE BIGINT NOT NULL,' +
'LASTCHECK TIMESTAMP,' + 'TOPRINT INTEGER DEFAULT 0);', NewDB);
Cmd('ALTER TABLE MY_CARD ADD PRIMARY KEY (ID);', NewDB);
Cmd('SET TERM ^ ;', NewDB);
Cmd('CREATE TRIGGER BI_MY_CARD_ID FOR MY_CARD ACTIVE BEFORE INSERT POSITION 0 AS BEGIN ' +
'IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(MY_CARD_ID_GEN, 1); END^', NewDB);
Cmd('SET TERM ; ^', NewDB);
Result := True;
Finally
NewDB.Free;
End;
End; |
Partager