Zitat von
nahpets:
Hallo,
Frage: Auch wenn Du die Abfrage im Management Studio machst?
Wenn da ein anderes Ergebnis kommt, als im Programm, geht Dir "unterwegs" der Scope verloren, was ich nicht ausschließen möchte.
Was liefert Dir denn select IDENT_CURRENT('Akten') as ID
der holt wohl den höchsten vergebenen Wert zur ID-Spalte, der als Parameter übergebenen Tabelle.
Stephan
ich habe mir jetzt einen Workaround gebaut:
zunächst habe ich der Table ein Feld "neu" mit automatischen Inhalt 1 (nur 1, kein Increment) hinzugefügt. Obenauf einen Index drauf, damit die Suche ggfs. schneller geht.
Somit hat immer genau der neue Datensatz neu=1.
hier die Abfrage mit sofortiger Änderung neu=0;
Delphi-Quellcode:
function getaktennr : integer;
var _stmp : string;
_query : Tadoquery;
begin
_stmp := 'select neu, Aktennr from Akten where neu=1';
_query := Tadoquery.Create(nil);
with _query do begin
connection := mus_Service.ADOConnMUS;
_query.sql.Text := _stmp;
_query.open; open;
if (not eof) then begin
result := FieldByName('Aktennr').asinteger;
edit;
FieldValues['neu'] := 0;
post;
end else result := 0;
end;
end;
Danke an alle, die geholfen haben
- Mit diesem Workaround kann ich gut leben. Zumal dieses die einzige Stelle ist, an der der Datenbank neue Datensätze hinzugefügt werden.
Gruss
EL