![]() |
Re: Auto-Insertwert abfragen
Zitat:
Gruss EL |
Re: Auto-Insertwert abfragen
Delphi-Quellcode:
function LastIdentity : integer;
begin with TADOQuery.Create do begin //hier connection := mus_Service.ADOConnMUS; try sql.Text := 'Select Scope_Identity() as id'; open; if not(FielByName('id').IsNull) then result := FieldByName('id').asInteger; else result := 0; Close; finally Free; end; end; end ; |
Re: Auto-Insertwert abfragen
Zitat:
|
Re: Auto-Insertwert abfragen
Und mit @@IDENTITY statt Scope_Identity()? Aber ich möchte Jelly nicht in den Rücken fallen.
|
Re: Auto-Insertwert abfragen
Zitat:
Gruss EL |
Re: Auto-Insertwert abfragen
Hallo,
SQL-Code:
scheint erst dann einen Wert ungleich Null zu liefern, wenn mindestens ein Datensatz in der Tabelle ist. Liegt da eventuell das Problem?
Select Scope_Identity() as id
Stephan |
Re: Auto-Insertwert abfragen
Zitat:
nein - auch bei mehreren (im Moment 12 in der Testumgebung) Datensätzen immer 0 Gruss EL |
Re: Auto-Insertwert abfragen
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
SQL-Code:
der holt wohl den höchsten vergebenen Wert zur ID-Spalte, der als Parameter übergebenen Tabelle.
select IDENT_CURRENT('Akten') as ID
Stephan |
Re: Auto-Insertwert abfragen
Zitat:
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:
Danke an alle, die geholfen haben :shock: - Mit diesem Workaround kann ich gut leben. Zumal dieses die einzige Stelle ist, an der der Datenbank neue Datensätze hinzugefügt werden.
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; Gruss EL |
Re: Auto-Insertwert abfragen
Deine Lösung ist unschön wegen dem Extrafeld.
Lass doch mal in meinem Code dir Prüfung auf IsNull weg und versuche einfach den mit AsInteger zurückzugeben. Mit dem Scope_Identity() hatte ich noch nie Probleme, aber auch wohl deshalb vielleicht weil ich das so in der Form gar nicht mehr nutze. Ich plädiere definitiv zu der Lösung mit der Sequence Tabelle und der Stored Procedure aus ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz