Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: PapaMaik am Januar 27, 2020, 18:20:33

Titel: ID aus SQL Recordset ermitteln - Geänderter Treiber?
Beitrag von: PapaMaik am Januar 27, 2020, 18:20:33
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
Titel: Re: ID aus SQL Recordset ermitteln - Geänderter Treiber?
Beitrag von: PhilS am Januar 27, 2020, 19:54:42
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 (https://support.office.com/en-us/article/access-does-not-recognize-the-identity-column-in-a-linked-SQL-server-table-ae418bbf-2658-453a-82f1-7e043812d60d)
Titel: Re: ID aus SQL Recordset ermitteln - Geänderter Treiber?
Beitrag 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 !!
Titel: Re: ID aus SQL Recordset ermitteln - Geänderter Treiber?
Beitrag von: PhilS am Januar 28, 2020, 10:20:35
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.
Titel: Re: ID aus SQL Recordset ermitteln - Geänderter Treiber?
Beitrag von: PapaMaik am Januar 28, 2020, 16:36:28
jap das war es :-)