unter Delphi gab es die Möglichkeit, den Generator anzugeben und somit ein autoincrement automatisch füllen zu lassen.
Bei der TSQLQuery finde ich nichts entsprechendes. Ich hab eine Tabelle erstellt und einen Triger dazu.
Dieser sollte doch eigentlich nach dem Erzeugen eines neuen Datensatze automatisch ausgeführt werden? Klappt leider nicht bei mir.
Hier die Tabelle und der Trigger:
ZQuery1.SQL.add('CREATE TABLE "MANDANT" ');
ZQuery1.SQL.add('( ');
ZQuery1.SQL.add(' "ID" INTEGER NOT NULL, ');
ZQuery1.SQL.add(' "NR" INTEGER, ');
..
..
ZQuery1.SQL.add(' PRIMARY KEY ("ID") ');
ZQuery1.SQL.add(') ');
ZQuery1.execSQl;
ZQuery1.sql.clear;
Memo1.lines.add(' - Trigger');
ZQuery1.SQL.add('CREATE TRIGGER "SET_MANDANTID" FOR "MANDANT" ');
ZQuery1.SQL.add('ACTIVE BEFORE INSERT POSITION 0 ');
ZQuery1.SQL.add('as ');
ZQuery1.SQL.add('begin ');
ZQuery1.SQL.add(' if (new.ID is null) then new.ID = gen_id(gen_mandant, 1); ');
ZQuery1.SQL.add(' if (new.ID = ''0'') then new.ID = gen_id(gen_mandant, 1); ');
ZQuery1.SQL.add(' if (new.WJTag is Null) then new.WJTag = ''1''; ');
ZQuery1.SQL.add(' if (new.WJMonat is Null) then new.WJMonat = ''1''; ');
ZQuery1.SQL.add(' if (new.Abrechtag is Null) then new.Abrechtag = ''1''; ');
ZQuery1.SQL.add(' if (new.AAdeckeln is Null) then new.AAdeckeln = ''0''; ');
ZQuery1.SQL.add(' if (new.AEdeckeln is Null) then new.AEdeckeln = ''0''; ');
ZQuery1.SQL.add(' if (new.PAdeckeln is Null) then new.PAdeckeln = ''0''; ');
ZQuery1.SQL.add(' if (new.PEDeckeln is Null) then new.PEdeckeln = ''0''; ');
ZQuery1.SQL.add(' if (new.DAdeckeln is Null) then new.DAdeckeln = ''0''; ');
ZQuery1.SQL.add(' if (new.DEdeckeln is Null) then new.DEdeckeln = ''0''; ');
ZQuery1.SQL.add(' if (new.P1komplett is Null) then new.P1komplett = ''0''; ');
ZQuery1.SQL.add(' if (new.P2komplett is Null) then new.P2komplett = ''0''; ');
ZQuery1.SQL.add(' if (new.MinPause is Null) then new.MinPause = ''1''; ');
ZQuery1.SQL.add(' if (new.UrlinStunden is Null) then new.UrlinStunden = ''0''; ');
ZQuery1.SQL.add('end ');
ZQuery1.execSQl;
Tabelle wird mit TSQLQuery geöffnet und mit dem DBNavigator ein neuer Datensatz erzeugt. Beim Speichern kommt dann "Field ID is required, but not supplied".
Danke noch einmal und guten Rutsch wünsche ich..
peter