Autor Beitrag
cscp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Mi 26.01.05 01:27 
Hallo,
wie kann ich denn den aktuellen bzw. den nächsten Wert meines automatisch hochzählenden primary keys aus einer Paradox Tabelle auslesen?
Mein Problem...
Die Tabelle ist zeitweise leer, deswegen kann ich nicht einfach den letzten Eintrag nehmen...
Danke!

EDIT: Ich will praktisch den Wert des Primary Keys für den kommenden Eintrag aus einer leeren Tabelle lesen.
(leer heißt nicht gleich primary key 1... der zählt nämlich weiter egal wie oft gelöscht wird...)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 26.01.05 08:40 
Paradox vergibt den Wert erst beim Anlegen(genauer: mit dem Speichern) eines neuen Datensatzes.
Ich kenne keine Funktion, mit der man feststellen kann, welches der nächste Wert sein könnte.
Das macht auch nicht wirklich Sinn. Sobald ein anderer Anwender einen Datensatz erfasst, stimmt die Annahme des nächsten Wertes sowieso nicht mehr. Auch wenn man eine Single-User-Anwendung hat, sollte man sich sowas gar nicht erst angewöhnen. Das Problem geht schon los, wenn der Anwender das Programm versehentlich zweimal gestartet hat.
Daraus folgt:
Immer erst den Hauptdatensatz anlegen(Post nicht vergessen). Dann bekommst du einen Wert, der dann auch sicher ist. Es sei denn, du löscht den Hauptdatensatz, ohne die referentielle Integrität zu beachten.

Vielleicht gibt es ein Funtkion, die dir den Wert liefert, aber ich empfehle dir den sicheren Weg.
OlliWausD
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 212

Win 2000/XP
Delphi 5 Professional - Interbase/Firebird
BeitragVerfasst: Mi 26.01.05 14:08 
wie wäre es mit

ausblenden Delphi-Quelltext
1:
2:
3:
Query.sql.text := 'select max(ID) from Tabelle';
Query.open
Variable := Query.fields[0].asinteger+1;


aber ob Sinn und Zwick dieser Abfrage nützlich ist, is fraglich. Jasocul hat ja schon ein paar Worte dazu abgegeben :)

mfg

OlliW

_________________
Take it easy
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 26.01.05 14:19 
@Olli:
Wird nicht funktionieren, da die Tabelle auch leer sein kann. :wink:
OlliWausD
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 212

Win 2000/XP
Delphi 5 Professional - Interbase/Firebird
BeitragVerfasst: Mi 26.01.05 14:27 
hm.... stimmt. Dann wäre die nächste ID <null>, obwohl diese z.B.: 3568 wäre.

Warn die Finger wieder schneller als das Spezial-Fall-Denken :roll:

mfg

OlliW

_________________
Take it easy