PDA

Vollständige Version anzeigen : access mysql - problem mit sperrverletzung


greenhorn
12.07.2006, 10:00
guten morgen zusammen,
ich hab hier eine mysql datenbank laufen und versuche grade ein frontend mit access zu basteln.
leider klappt das alles nich so einfach wie mit php :P

mein problem:
ich habe ein listenfeld in dem mehrere datensätze angezeigt werden.
durch einen klick auf einen dieser datensätze soll per docmd.runsql ein sql-string ausgeführt werden ("UPDATE projekte SET aktivesProjekt =" & var) .

das klappt auch ab und an mal, aber leider bekomme ich auch andauernd die fehlermeldung, dass es eine "sperrverletzung" beim update gegeben habe.

ich habe ein par testdatensätze in dem listenfeld und es ist mir schleierhaft woran es liegt, da es bei einigen datensätzen funktioniert und bei anderen wieder nicht.
die fehler sind aber auch nicht wiederholbar. bei ersten versuch klappt es noch bei einem bestimmten datensatz, beim nächsten versuch gibts den fehler, beim dritten versuch gehts auf einmal wieder.

ich hab hier langsam den kaffee auf.
vielleicht hat ja jemand nen tip für mich.
besten dank schonmal

p.s.
access 2002
mysql server 5.0.22

SWR
12.07.2006, 10:05
Da weiß ich einfach zu wenig, um das von hier aus zu beurteilen.

Nur der übliche Standard zum Abchecken:
1. Timestamp-Feld vorhanden?
2. Primärschlüssel vorhanden?

greenhorn
12.07.2006, 10:18
öhm ja, timestamp und pk sind beide vorhanden.
daran sollte es nicht liegen.

greenhorn
12.07.2006, 10:27
ich habe grade mal probiert direkt in der tabelle etwas zu ändern. geht genauso wenigt wie über runsql.
"dieser datensatz wurde seit beginn der bearbeitung von einem anderen benutzer geändert...."

SWR
12.07.2006, 10:36
Ich kann Dir leider nicht konkret weiterhelfen.

Wenn ich auf den MySQL-Server zugreife, mache ich das immer ganz direkt, also derart, daß noch nicht mal Tabellen im Datenbankfenster verknüpft sind. Zumal man nicht sehr weit kommt, wenn der Datenbankserver bei einem Provider betrieben wird, der - wie in den meisten Fällen - die Verbindung nach wenigen Sekunden kappt. Dann nützt die schönste Verknüpfung von Tabellen gar nichts.

Z.B.:Dim Con As ADODB.Connection, SQL AS String

SQL = "UPDATE ...."

Set Con = New ADODB.Connection
Con.ConnectionString = "..." ' Dein ConnectionString
Con.Open
Con.Execute (SQL)
Con.Close
Set Con = Nothing
Und damit hatte ich noch nie Probleme - in der weiteren Programmierung all Deiner Funktionalitäten gilt es dabei aber, viel mehr Aufwand betreiben zu müssen, wenn man sozusagen "verbindungslos" im Direktzugriff mit dem Server arbeitet. Aber vielleicht weiß ja noch jemand, woran das jetzt im Einzelfall bei Dir liegen könnte.

greenhorn
12.07.2006, 10:40
besten dank fürs erste, ich werd das mal auf dem weg probieren.

SWR
12.07.2006, 10:47
Ich habe grade mal probiert, direkt in der Tabelle etwas zu ändern. geht genauso wenigDann sieh' mal nach, was in diesem Datensatz im Timestamp-Feld steht, wahrscheinlich gar nichts, da das Feld wahrscheinlich nachträglich eingefügt wurde. Wenn dort gültige Einträge drin sind (nach Neuerfassung eines Datensatzes), kannst Du auch nachträglich updaten.

Access nimmt die Korrektheit des TS-Feldes sehr "ernst" (bei verknüpften Tabellen) - wie Du ja erleben durftest. Im Direktzugriff auf den MySQL-Server kommt einem Access halt nicht dazwischen.

greenhorn
12.07.2006, 11:06
so, ich bins nochma :)
ich hatte die tabellen komplett geleert und wieder befüllt, nachdem ich die timestamps dazugepackt hatte, also waren da schon werte drin.

ich hab jetzt mal alle verknüpften tabellen gelöscht und wieder neu hinzugefügt, anstelle sie immer nur zu aktualisieren.
und siehe da: jetz läuft es reibungslos. \o/

besten dank swr!

SWR
12.07.2006, 11:24
Ich hab jetzt mal alle verknüpften Tabellen gelöscht und wieder neu hinzugefügtDas solltest Du immer machen, wenn Du im Server direkt Änderungen an Tabellen durchführst (bzw. Dich des Tabellenverknüpfungs-Managers von Access bedienen).

Hansol
13.11.2014, 16:16
Hallo,
ich verbinde über ODBC zur mysql Datenbank da hier aber sehr schnell die Verbindung gekappt wird habe ich nach einer anderen Lösung gesucht.

Habe nachstehendes gefunden.

Nur komme ich hier nicht weiter, es kommt beim kompilieren dass der Benutzerdefienierte Typ nicht definiert ist.

Denke mal das da irgend ein Verweis fehlt, aber welcher?
Wer kann mir weiter helfen?

Habe Access 2010

Dim Con As ADODB.Connection, SQL As String

SQL = "UPDATE Flaschen SET quantity = '" & "0" & "' where products_id = '" & "99819a991" & "';"

Set Con = New ADODB.Connection

ADODB.Connection.ConnectionString = "xxxxx;Database=xxxxx;Uid=xxxxx;Pwd=xxxxx;" ' Dein ConnectionString
Con.Open
Con.Execute (SQL)
Con.Close
Set Con = Nothing

Gabi-u-Martin
19.02.2016, 20:26
Hallo Hansol,

HAst Du das Problem in den Griff bekommen? Meine DB leidet an der selben Krankheit.

MArtin

Marsu65
19.02.2016, 21:20
Öhmmmm ... Threaderöffnung 10 Jahre her,
der Beitrag von Hansol ist 2 Jahre alt ...
letzte Aktivität 05.03.2015 ... nur ein knappes Jahr ...
Martin, erwartest du im ernst eine Antwort?
Nicht wirklich oder? ;)