Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Firebird / UniDac - Insert über Query?

  Alt 21. Feb 2010, 07:38
Moin !

Erstmal danke mkinzler !!

Hätte da aber nochmal ne Frage. Ich komme mit dem UniDac noch nicht ganz klar. Und ich denke es liegt daran, das ich derzeit meist ADO verwendet habe. Und dort hat man eine DataSet Componente. Die ist einfacher zu handhaben als ein Query (zumindest für mich im moment ).

Was ich auch hinbekomme ist ein Append mit Query:
Delphi-Quellcode:
  Query.Close;
  Query.SQL.Text := 'select * from DataStore where 1=0;';
  Query.Active := True;
  Query.Edit;
  Query.FieldByName('ID').AsInteger := 12;
  Query.FieldByName('FIELD1').AsWideString := 'Hallo';
  Query.append;
Was nicht geht ist eine Max Abfrage:
Delphi-Quellcode:
    Query.Close;
    Query.SQL.Text := 'Select max(ID) from DataStore;';
    Query.Active := True;
Da kriege ich den Fehler dass das Feld ID nicht gefunden werden kann.
erstaunlich ist aber, das ich das im Queryeditor mit genau dem Statement problemlos auslesen kann

Und könnte mir jemand sagen wie ich das mit einem AutoInc Feld mache?
Ich habe in meiner Datenbank einen entsprechenden Trigger definiert und einen Generator:
TRIG_AUTOINCID
SQL-Code:
AS
BEGIN
if (NEW.ID is NULL) then NEW.ID = GEN_ID(AUTOINCID, 1);
END
Der AutoInc funktioiert auch wenn ich mit einem DB admin Tool einen neuen Datensatz anlege.

Doch wie kann ich den Trigger mittels UniDac nutzen und auch beim anlegen gleich die generierte ID zurück bekommen?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat