Ich habe eine VBA-MsAccess-Funktion persist() geschrieben um einfach Einzelne Datensätze in eine Tabelle zu schreiben.
http://wiki.yaslaw.info/dokuwiki/doku.php/vba/access/functions/persist
Dabei wird analog zu INSERT ... ON DUPLICATE UPDATE verfahren.
Sprich, es wird auf den Primary-Key geprüft um festzustellen, ob der Record hinzugefügt oder geändert werden muss. Soweit ist auch alles klar.
Bei AutoInkrement-PrimaryKeys weiss ich nun nicht genau, wie das Verhalten umgesetzt werden soll, wenn zwar eine ID mitgegeben wird, diese jedoch nicht exisitiert. Da das Feld ein AUtoInkrement ist, kann die ID nicht gesetzt werden.
Hier ein Beispiel aus meinem ImmadiateWindow (Direktfenster)
printRs() macht nix anderes, als die Tabelle ins Direktfenster zu schreiben
Also, meine Frage. Wie würdet ihr den Fall handeln. So wie im Moment, einfach ein neuen Datensatz erstellen und die eingegebene ID ignorieren oder eine Fehlermeldung ausgeben?
http://wiki.yaslaw.info/dokuwiki/doku.php/vba/access/functions/persist
Dabei wird analog zu INSERT ... ON DUPLICATE UPDATE verfahren.
Sprich, es wird auf den Primary-Key geprüft um festzustellen, ob der Record hinzugefügt oder geändert werden muss. Soweit ist auch alles klar.
Bei AutoInkrement-PrimaryKeys weiss ich nun nicht genau, wie das Verhalten umgesetzt werden soll, wenn zwar eine ID mitgegeben wird, diese jedoch nicht exisitiert. Da das Feld ein AUtoInkrement ist, kann die ID nicht gesetzt werden.
Hier ein Beispiel aus meinem ImmadiateWindow (Direktfenster)
printRs() macht nix anderes, als die Tabelle ins Direktfenster zu schreiben
Visual Basic:
'persist ohne ID: Ein neuer Datensatz wird angelegt
persist "T_TXT", "[TXT]='ABC'"
printrs "T_TXT"
| ID | TXT |
|----|-----|
| 1 | ABC |
'Die ID 1 existiert bereits, ergo wird ein Update durchgeführt
persist "T_TXT", "ID=1, [TXT]='DEF'"
printrs "T_TXT"
| ID | TXT |
|----|-----|
| 1 | DEF |
'Jetzt versuche ich die ID 234 hinzuzufügen. Diese gibt es nicht. Da es einAuto Inkrementfeld ist, wird die ID 2 erstellt
'--> Genau dieses Verhalten ist der Mittelpunkt der Diskusion <--
persist "T_TXT", "ID=234, [TXT]='XYZ'"
printrs "T_TXT"
| ID | TXT |
|----|-----|
| 1 | DEF |
| 2 | XYZ |
Also, meine Frage. Wie würdet ihr den Fall handeln. So wie im Moment, einfach ein neuen Datensatz erstellen und die eingegebene ID ignorieren oder eine Fehlermeldung ausgeben?