Zitat von
Stevie:
Ich möchte auf jeden Fall die von der
DB generierte ID benutzen und mir nicht selber eine ermitteln.
Dazu brauche ich eine Möglichkeit, mir nach dem Post die letzte ID zu ermitteln,
damit dieses Komische Verhalten in der TQuery nicht auftritt.
Ein AutoInc-Feld ist für den Programmierer sehr bequem, da es sich um nix kümmern muss, aber es gibt
einige
gravierende Nachteile:
Die Datenbank (na ja die
BDE) erzeugt den Wert des Primärschlüssels.
Deine Anwendung kennt diesen Wert nicht und es gibt auch keine zuverlässige Methode diesen Wert
abzufragen.
Grund: du könntest ja einen Datensatz einfügen, der in allen Feldern identisch zu einem bestehenden Datensatz ist.
Nur das Primärschlüsselfeld wäre dann unterschiedlich, aber genau das kennst du ja nicht!!!
Dieses SELECT IDENTITY_VAL_LOCAL() ist ein Krücke, die nur bei wenigen Datenbanken funktioniert
und nicht portierbar ist.
Es gibt nur eine
saubere Methode, wie man AutoIncfelder implementieren kann und das benötigt sog.
Generatoren. (und die
BDE kennt diese nicht)
Eine
Paradox-Tabelle hat einen
internen & unsichtbaren Generator für das AutoInc-Feld.
Dieser Generator kann von Aussen nicht gesetzt werden.
Wenn durch ein Programmabsturz der interne Generator z.B. auf 47 steht, aber in der Tabelle schon
ein Datensatz mit Key 47 gespeichert ist, dann kann man keinen neuen Datensatz mehr speichern!!!
->Fehler doppelter Primärschlüssel blah...
Du solltest die AutoInc-Felder vermeiden, wie der Teufel das Weihwasser.
Schreib einfach, was du in deiner Tabelle speichern möchtest und wir sagen dir, wie der Primärschlüssel
gebaut werden kann.