Acc97/SQLServer2005: Autowert vom Typ Zufall

12/03/2008 - 09:10 von Kurt Langeder | Report spam
Hallo NG!

Bin gerade dabei einige Tabelle aus einer Access97-MDB (SR-2) auf den
SQL-Server2005 (SP 1) zu verlagern und dann per ODBC-Link wieder in
die MDB einzubinden. Die Migration wurde mit "Microsoft SQL Server
Migration Assistant for Access" gemacht und es funktioniert soweit
auch alles.

Jedoch gibt es ein Problem beim Anfügen an gelinkte Tabellen mittels
Code.
Democode:

Dim db1 As Database, tab2 As Recordset
Set db1 = CurrentDb
Set tab2 = db1.OpenRecordset("SELECT * FROM MyTabelle", dbOpenDynaset,
dbSeeChanges)
tab2.AddNew
tab2!Feld1 = 1
tab2!Feld2 = "Test"
tab2.UPDATE

'zum letzten bearbeiteten Datensetz gehen, um ID zu bekommen
tab2.Move 0, tab2.LastModified

tab2.Edit
'beim tab2.Edit kommt die Fehlermeldung "3167 Datensatz ist gelöscht".

NeueID = tab2!ID
tab2!Feld3 = 3
tab2!Feld4 = "Test"
tab2.UPDATE
tab2.Close: db1.Close

Das Problem dürfte mit dem AutoWert-Feld "ID" zusammenhàngen. In der
original Accessdatei war ID der Primàrschlüssel: AutoWert, Long
Integer, Zufall (!).
In der eingebundenen SQL-Tabelle wird in Access dann für "ID" der
Primàrschlüssel: Zahl, Long Integer angezeigt.

Für Access-Tabellen, bei denen der Primàrschlüssel vom Typ: Autowert,
Long Integer, Inkrement (!) ist, gibt es mit obigen Democode keine
Probleme (die SQL-Tabellen werden auch als Autowert, Long Integer,
Inkrement in Access angezeigt).

Gibt man die Daten direkt in die gelinkte Tabelle ein, wird der
Datensatz ordnungsgemàß gespeichert und auch ein zufàlliger AutoWert
(z.B. -2147057699) beim Datensatzwechsel generiert.

Da ich aus Kompatibilitàt mit anderen Datenbestànden auf den AutoWert
vom Typ "Zufall" nicht verzichten möchte, suche ich eine entsprechende
Lösung.


Schöne Grüße
Kurt
 

Lesen sie die antworten

#1 Hannes Brunner
12/03/2008 - 11:54 | Warnen spam
Hallo Kurt,

Kurt Langeder schrieb:
Hallo NG!

Bin gerade dabei einige Tabelle aus einer Access97-MDB (SR-2) auf den
SQL-Server2005 (SP 1) zu verlagern und dann per ODBC-Link wieder in
die MDB einzubinden. Die Migration wurde mit "Microsoft SQL Server
Migration Assistant for Access" gemacht und es funktioniert soweit
auch alles.

Jedoch gibt es ein Problem beim Anfügen an gelinkte Tabellen mittels
Code.



<snip>

Das Problem dürfte mit dem AutoWert-Feld "ID" zusammenhàngen. In der
original Accessdatei war ID der Primàrschlüssel: AutoWert, Long
Integer, Zufall (!).
In der eingebundenen SQL-Tabelle wird in Access dann für "ID" der
Primàrschlüssel: Zahl, Long Integer angezeigt.



da hat der Migration Assistant wohl einen Trigger gebastelt, da der SQL
Server nàmlich Zufallswerte bei IDENTITY-Spalten gar nicht beherscht.
Gut gemeint, aber letztendlich nur eine böse Falle, wie du zum Glück
gleich festgestellt hast. Ich denke es gibt nur zwei Auswege: Entweder
auf die Zufallsfunktion verzichten oder diese clientseitig nachbilden.

Gruß
Hannes

Ähnliche fragen