Hallo alle zusammen,
Ich habe eine Excel-Datei, welche auf einem Netzlaufwerk liegt.
Von den betreffenden Usern wird diese Excel-Datei, um mit dieser zu arbeiten, auf die lokale Festplatte kopiert
und anschließend geöffnet. Excel greift dabei auf eine Access-Datenbank zu, damit mehrere User gleichzeitig mit den Daten arbeiten können. Der Zugriff auf die Datenbank erfolgt auch nur dann, wenn er notwendig ist; sprich: Nach jedem Zugriff auf Daten wird die Datenbank wieder geschlossen.
Das Problem was jetzt auftritt ist, das sich die Datenbank irgendwie selber einen Schreibschutz "verpasst" und man somit keinen Zugriff mehr auf diese erhält. Somit ist ein Arbeiten nicht möglich.
Wenn ich selber in Access die Datenbank öffne, erhalte ich auch die Warnung, das die Datenbank schreibgeschützt ist.
Kopiere ich aber die Datei und öffne sie dann, habe ich wieder vollen Zugriff.
Wer kann mir weiterhelfen?? Was ist die Ursache des Schreibschutzes?? Und wie kann ich verhindern, das die Datenbank schreibgeschützt wird??
Hier mal ein Beispiel, wie auf die Datenbank zugegriffen wird:
Sub Datenbankverbindung_aufbauen()
Dim strDatei As String
Set connDB = New ADODB.Connection
strDatei = U:\Datenbank\2012.mdb"
With connDB
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeReadWrite
.Open "Data Source=" + strDatei + ";Persist Security Info=False;Jet OLEDB:Database; Password=TTTTTT"
End With
End Sub
Sub Mitarbeiterdaten_Recordset_lesen()
Call Datenbankverbindung_aufbauen
Set rsMitarbeiterdaten = New ADODB.Recordset
strSQL = "SELECT Mitarbeiterdaten.Name, Mitarbeiterdaten.Tätigkeit, Mitarbeiterdaten. _
Schicht, Mitarbeiterdaten.Schichtsystem, Mitarbeiterdaten.Beginn, Mitarbeiterdaten.Ende, Mitarbeiterdaten.Pos, Mitarbeiterdaten.Zusatztage, Mitarbeiterdaten.SilvesterAlt, Mitarbeiterdaten.ResttageUrlaubAlt, Mitarbeiterdaten.ResttageAbbummelnAlt, Mitarbeiterdaten.Anzeigebereich FROM Mitarbeiterdaten;"
rsMitarbeiterdaten.Open strSQL, connDB, adOpenForwardOnly, adLockOptimistic
End Sub
Sub Mitarbeiterdaten_lesen()
Call Mitarbeiterdaten_Recordset_lesen
rsMitarbeiterdaten.MoveFirst
intAA = 3
While Not rsMitarbeiterdaten.EOF
intAA = intAA + 1
Cells(intAA, 1).Value = rsMitarbeiterdaten("Name")
Cells(intAA, 2).Value = rsMitarbeiterdaten("Tätigkeit")
Cells(intAA, 3).Value = rsMitarbeiterdaten("Schicht")
Cells(intAA, 4).Value = rsMitarbeiterdaten("Schichtsystem")
Cells(intAA, 5).Value = rsMitarbeiterdaten("Pos")
Cells(intAA, 6).Value = rsMitarbeiterdaten("Beginn")
Cells(intAA, 7).Value = rsMitarbeiterdaten("Ende")
rsMitarbeiterdaten.MoveNext
Wend
rsMitarbeiterdaten.Close
Set rsMitarbeiterdaten = Nothing
Set connDB = Nothing
End Sub
Über Call Mitarbeiterdaten_lesen wird die Prozedur gestartet. Das Recordset wird gelesen (mit öffnen der Datenbank). Nachdem die Datenausgelesen sind, wird das Recordset und die Datenbank geschlossen.
Gruß Thomas