Hallo zusammen,
ich bekomme seit ich das Kennwort meines Programmes geändert habe eine Laufzeitfehler 3251:
Das aktuelle Recordset unterstütz keine Aktualisierung usw.
Das Programm lief vorher schon ca. 2 Jahre fehlerfrei. Nach dem Öffnen des Programmes kommt ein Eingabeformular bei dem ein Aufrufzähler beim Laden des Programmes die täglichen Aufrufe zählt. Dies müsste eigentlich die Fehlerursache sein - da nur hier ein Recordset vorkommt. Hier mall der Programmcode:
Private Sub Form_Load() ' Aufrufzähler aktualisieren
' CurrentDb.Execute "UPDATE tblFormAufrufe SET tblFormAufrufe.AufrufZähler = " _
& " Nz(DMax('Aufrufzähler','tblFormAufrufe'),0)+1", dbFailOnError
Dim Laufcount As Integer
Dim rst As New ADODB.Recordset
On Error GoTo Err_Handler
rst.Open "tblAufrufe", ActiveConnection:=CurrentProject.Connection, CursorType:=adOpenKeyset, LockType:=adLockOptimistic
If rst.BOF Then
With rst
.AddNew
.Fields("Aufrufzaehler").Value = 1
.Update
GoTo ersterDurchlauf
End With
End If
With rst
.MoveLast
Laufcount = rst.Fields("Aufrufzaehler") + 1
.AddNew
.Fields("Aufrufzaehler").Value = Laufcount
.Update
End With
ersterDurchlauf:
rst.Close
Set rst = Nothing
DoCmd.GoToRecord , , acLast
Exit Sub
Err_Handler:
MsgBox "Ein unerwarteter Fehler ist aufgetreten. Fehler: " & _
Err.Number & vbNewLine & Err.Description, vbCritical
End Sub
Wie gesagt das Programm lief jetzt zwei Jahre ohne Fehler. Das Recordset wird mit adLockOptimistic geöffnet (dürfte eigentlich nichts passieren).
Der Fehler passiert nur mit MAC Rechnern! Mit Windowsrechner läuft das einwandfrei. Wenn der Fehler einmal aufgetaucht ist, erscheint er dann auch auf Windowsrechner beim Starten. Ich muss dann komprimieren und reparieren machen um ihn weg zu bekommen.
Wenn ich den Programmcode für den Aufrufzähler weglasse läuft es einwandfrei auf MAC. Irgendwie blicke ich da gerade nichts mehr!
Noch kurz zur Umgebung: Das Programm läuft auf einem Windows Server 2012 R2. Dort ist leider noch ein uraltes Access drauf (2003). Aber wie gesagt es lief bis jetzt einwandfrei!
Grüße
Herbert
Hallo,
ich habe jetzt den Programmcode für den Aufrufzähler auskommentiert. Beim Öffnen mit dem MAC erscheint jetzt die Meldung:
"Schreibgeschützt - die Datenbank wurde schreibgeschützt geöffnet...
Was jetzt noch merkwürdiger ist: Mit meinem alten MAC 2013 kann ich die Datei ohne Fehlermeldung öffnen.
Zitat von: herb54 am November 30, 2021, 08:43:59Das Programm läuft auf einem Windows Server 2012 R2. Dort ist leider noch ein uraltes Access drauf (2003).
Wie ist das zu verstehen? Ist das ein Terminal Server auf den sich die Benutzer per RDP einwählen? Ist die Anwendung in Frontend/Backend aufgeteilt, oder öffnen alle dieselbe Datei?
Mein Bauchgefühl ist im Moment, dass die Ursache für dein Problem darin liegt, dass die Benutzer auf Dateisystem-Ebene keine ausreichenden Berechtigungen auf die Datei oder das Verzeichnis haben.
Hallo Phil,
ja alle öffnen die gleiche Datei (Serverzugang RDP). Du könntest recht haben mit den Benutzerrechten. Da wurde etwas geändert - muss ich mal nachschauen. Erst mal vielen Dank!
Gruß
Herbert
Hallo Phil,
ja das war das Problem. Da wurde letzte Woche das Kennwort des Programmes geändert und gleichzeitig die Rechte der Benutzer des Ordners geändert in dem sich das Programm befindet. Da Vererbung automatisch aktiviert ist konnte das Programm den Recordset nicht durchführen da die Rechte des Ordners hier Anwendung finden und nicht die des Programmes. Bei dem Programm war zwar Vollzugriff eingestellt aber die Ordnerrechte haben dies unterbunden (ist schön zu sehen wenn man die Benutzerrechte überprüft: Da sind die übergeordneten Ordnerrechte ausgegraut und die Rechte im Programm nicht). Ich bin folgendermaßen vorgegangen: Ich habe Benutzer im Hauptordner entfernt und neu angelegt mit Vollzugriff. Im Programm habe ich die Vererbung deaktiviert und durch den Button "Alle Berechtigungseinträge für untergeordnete Objekte durch vererbbare Berechtigungseinträge von diesem Objekt ersetzen" wieder die Vererbung aktiviert. Dadurch hatte ich unter Sicherheit - Erweitert- Berechtigungen wieder die Berechtigungen vom Hauptordner übernommen und das Programm lief einwandfrei. Vielen Dank noch mal für deinen Tipp - ich wäre da nie draufgekommen!
Grüße
Herbert
Noch eine Ergänzung warum das Programm auf den Windowsrechnern lief: Hier benutzen fast alle MAC. Es gibt nur zwei Windowsrechner. Diese hatten im Hauptordner schon Vollzugriffsrechte - daher kam da der dort Fehler nie!