Discussion:
MS Access hat einen Datensatz wegen Sperrverletzungen nicht akt.
(zu alt für eine Antwort)
Amin
2005-01-16 21:27:03 UTC
Permalink
Hi,

ich verlinke mit DAO drei Tabellen einer MYSQL-DB mit Access.
Das Auslesen der Tabellen funktioniert ohne Probleme.

Nun möchte ich eine Aktualisierungsabfrage nach gleichem Schema durchführen
und erhalte folgende Fehlermeldung:

"MS Access konnte nicht alle Datensätze aktualisieren, die von der
Aktualisierungabfrage betroffen sind.

MS Access hat ... einen Datensatz wegen Sperrverletzungen nicht
aktualisiert..."

Ich habe mir das abgesetzte SQL Statement mit Debug.Print angezeigt und
erfolgreich mit dem MySQL Client ohne Fehler ausgeführt.

Kann mir jemand sagen, woran das liegen könnte?
Aufgefallen ist mir, dass die Datensätze der Tabelle als gelöscht in der
Tabellenansicht dargestellt werden. Muss ich die Tabelle refreshen oder geht
das prinzipiell nicht?

Danke.

Amin

(Access 2000 SP3)

Denke nicht, dass es am code liegt:

Sub ok_click()
Dim intnewQueue As Integer
Dim strTicketnr As String
Dim g_strQUERY As String
intnewQueue = 15
strTicketnr = "123456"
g_strQUERY = "update ticket set Queue_ID = " & intnewQueue & "" _
& " where tn = '" & strTicketnr & "'"
DoCmd.RunSQL g_strQUERY
End Sub
Henry Habermacher [MVP Access]
2005-01-17 09:53:19 UTC
Permalink
Hallo Amin
Post by Amin
Kann mir jemand sagen, woran das liegen könnte?
Aufgefallen ist mir, dass die Datensätze der Tabelle als gelöscht in
der Tabellenansicht dargestellt werden. Muss ich die Tabelle
refreshen oder geht das prinzipiell nicht?
Grund liegt vermutlich daran, dass Du Access nicht mitgeteilt hast,
welches der Eindeutige Schlüssel über der Tabelle ist (ich denke es ist
strTicketNr oder ist dieser evt. nicht eindeutig?). Falls es da keinen
gibt, solltest Du da einen anlegen, sonst hat Access probleme, den
Update durchzuführen.

Des weiteren:

Dim db as Database
set db = CurrentDB
db.Execute strSQL, dbFailOnError

gibt Dir weit bessere Möglichkeiten, herauszufinden, was passiert ist.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Amin
2005-01-17 12:37:01 UTC
Permalink
Hallo Henry,

danke für die Antwort.
Der Primärschlüssel ist ein anderes Feld, welches ich nicht zwangsläufig für
die Abfrage benötige. Leider finde ich keine Informationen, wie ich bei einer
verknüpften Tabelle Access mitteilen kann, welche Spalte den Primärschlüssel
enthält. Gibt es vielleicht einen Link um dies nachlesen zu können?

Ich habe bei diesem Problem bereits mit SQL-Pass-Through-Abfragen
experimentiert. Select-Statements kann ich ohne Probleme ausführen.
Allerdings habe ich keine Quellen finden können, wie man ein Update Statement
ausführt. Dazu bräuchte ich nur mal eine Idee, wo ich dazu was was nachlesen
kann, bzw. ein Beispiel finde.

Danke und Grüsse,

Amin Abu Soud
Post by Henry Habermacher [MVP Access]
Hallo Amin
Post by Amin
Kann mir jemand sagen, woran das liegen könnte?
Aufgefallen ist mir, dass die Datensätze der Tabelle als gelöscht in
der Tabellenansicht dargestellt werden. Muss ich die Tabelle
refreshen oder geht das prinzipiell nicht?
Grund liegt vermutlich daran, dass Du Access nicht mitgeteilt hast,
welches der Eindeutige Schlüssel über der Tabelle ist (ich denke es ist
strTicketNr oder ist dieser evt. nicht eindeutig?). Falls es da keinen
gibt, solltest Du da einen anlegen, sonst hat Access probleme, den
Update durchzuführen.
Dim db as Database
set db = CurrentDB
db.Execute strSQL, dbFailOnError
gibt Dir weit bessere Möglichkeiten, herauszufinden, was passiert ist.
Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
stefan hoffmann
2005-01-17 12:43:58 UTC
Permalink
tach Amin,
Post by Amin
Der Primärschlüssel ist ein anderes Feld, welches ich nicht zwangsläufig für
die Abfrage benötige. Leider finde ich keine Informationen, wie ich bei einer
verknüpften Tabelle Access mitteilen kann, welche Spalte den Primärschlüssel
enthält.
Z.B. als SQL:
"CREATE INDEX IndexName ON Tabelle(Feldliste) WITH PRIMARY;"
Post by Amin
Ich habe bei diesem Problem bereits mit SQL-Pass-Through-Abfragen
experimentiert. Select-Statements kann ich ohne Probleme ausführen.
Allerdings habe ich keine Quellen finden können, wie man ein Update Statement
ausführt.
Anstatt einer SELECT-Anweisung eine UPDATE-Anweisung als CommandText.

mfG
--> stefan <--
Amin
2005-01-17 12:45:08 UTC
Permalink
Hallo Henry,

wenn ich die Codezeile
"DoCmd.RunSQL strSQL"
durch
"db.Execute strSQL, dbFailOnError"
ersetze, führt Access das Update entsprechend aus.

Danke.
Post by Amin
Amin Abu Soud
Post by Henry Habermacher [MVP Access]
Hallo Amin
Post by Amin
Kann mir jemand sagen, woran das liegen könnte?
Aufgefallen ist mir, dass die Datensätze der Tabelle als gelöscht in
der Tabellenansicht dargestellt werden. Muss ich die Tabelle
refreshen oder geht das prinzipiell nicht?
Grund liegt vermutlich daran, dass Du Access nicht mitgeteilt hast,
welches der Eindeutige Schlüssel über der Tabelle ist (ich denke es ist
strTicketNr oder ist dieser evt. nicht eindeutig?). Falls es da keinen
gibt, solltest Du da einen anlegen, sonst hat Access probleme, den
Update durchzuführen.
Dim db as Database
set db = CurrentDB
db.Execute strSQL, dbFailOnError
gibt Dir weit bessere Möglichkeiten, herauszufinden, was passiert ist.
Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Loading...