Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

ID aus SQL Recordset ermitteln - Geänderter Treiber?

Begonnen von PapaMaik, Januar 27, 2020, 18:20:33

⏪ vorheriges - nächstes ⏩

PapaMaik

ch habe ein akutes Problem beim Zugriff auf den SQL Server. Seit vielen Jahren nutze ich folgendes Prinzip.

Im VBA lege ich einen neuen Datensatz in einem Recordset an. Da der SQL Server die ID erst nach dem Speichern vergibt mache ich folgendes.
Code ist natürlich verkürzt

...
...
tb.update
tb.movelast

vID = tb![ID]

Seit ein paar Tagen reagiert das Access / SQL nun anders und ich bekomme nun bei dem unveränderten Code eine Fehlermeldung "Datensatz ist gelöscht".

Die Fehlerursache besteht nun darin, das der Recordset nicht den neu angelegten Datensatz beinhaltet. Setze ich nun ein

tb.requery

vor die Zeile

vID = tb![ID]

so klappt es problemlos.

Nun kommt die Frage, hat sich der ODBC Treiber oder irgendetwas anderes geändert? Warum geht der Code, der seit Jahren läuft nun plötzlich nicht mehr?

Natürlich weiß ich, daß ich tausend andere Möglichkeiten hätte vorzugehen, ich muß aber wissen warum der unveränderte Code nun plötzlich nicht mehr funktioniert.

Vielen Dank für Eure Ideen!
cu Maik

PhilS

Zitat von: PapaMaik am Januar 27, 2020, 18:20:33
Nun kommt die Frage, hat sich der ODBC Treiber oder irgendetwas anderes geändert? Warum geht der Code, der seit Jahren läuft nun plötzlich nicht mehr?
Du hast die Tabellen neu verknüpft.

In Access 365/2016/2019 Version 1912 Build 16.0.12325.* gibt es einen Bug, der dafür sorgt, dass Autowert/Identity-Spalten nicht mehr als solche erkannt werden.
Zum Glück gibt es auch bereits ein Update das den Fehler korrigiert. - Einfach "Update Now" bei den Office Updates anstoßen.

Weitere Informationen: Access does not recognize the Identity Column in a linked SQL Server table
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

PapaMaik

Volkommen richtig, ich habe die Tabellen neu verknüpft.
Wenn das stimmt bin ich Dir echt was schuldig !!

PhilS

Zitat von: PapaMaik am Januar 28, 2020, 06:19:02
Volkommen richtig, ich habe die Tabellen neu verknüpft.
Wenn das stimmt bin ich Dir echt was schuldig !!
Ich denke, das stimmt schon.
Nachdem du das neuste Update zu Fehlerkorrektur installiert hast, musst du natürlich nochmal neu verknüpfen, damit die Identiy-Spalten wieder erkannt werden.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor