Moin,
beim öffnen von Excel/Access Daten sperrt mir der OledbConnector/OledbDataAdapter/Whatever die Datei solange, bis man das Programm beendet.
Hier mal ein Beispiel für Excel Dateien, ohne den unwichtigen Code dazwischen.
End Using sollte ja die Connection disposen und die Datei wieder freigeben, tut es aber nicht.
Auch wenn ich vor dem End Using noch ein .Dispose() ausführe, sind die Dateien weiterhin im Zugriff.
Das .Close am Ende der Connection hilft ebenfalls nicht.
Bei Access Dateien behob sich das Problem, wenn ich die nächste Datei öffne. Dabei gibt der Oledb Provider anscheinend die vorherige Datei(en) wieder frei, bei Excel funktioniert dies nicht.
Habt ihr ähnliche Erfahrungen bzw. Probleme damit gehabt und eine Lösung für mich?
Grüße
beim öffnen von Excel/Access Daten sperrt mir der OledbConnector/OledbDataAdapter/Whatever die Datei solange, bis man das Programm beendet.
VB.NET-Quellcode
- Dim CSB As New OleDbConnectionStringBuilder()
- With CSB
- .DataSource = File.FullName
- .Provider = "Microsoft.ACE.OLEDB.12.0"
- Select Case File.Extension.ToLower
- Case ".xls".ToLower
- .Add("Extended Properties", "Excel 8.0")
- Case ".xlsx".ToLower
- .Add("Extended Properties", "Excel 12.0")
- Case Else
- Exit Sub
- End Select
- End With
- Using Conn As New OleDbConnection(CSB.ConnectionString)
- With Conn
- If Not .State = ConnectionState.Open Then .Open()
- 'DoStuff
- If .State = ConnectionState.Open Then .Close()
- End With
- End Using
Hier mal ein Beispiel für Excel Dateien, ohne den unwichtigen Code dazwischen.
End Using sollte ja die Connection disposen und die Datei wieder freigeben, tut es aber nicht.
Auch wenn ich vor dem End Using noch ein .Dispose() ausführe, sind die Dateien weiterhin im Zugriff.
Das .Close am Ende der Connection hilft ebenfalls nicht.
Bei Access Dateien behob sich das Problem, wenn ich die nächste Datei öffne. Dabei gibt der Oledb Provider anscheinend die vorherige Datei(en) wieder frei, bei Excel funktioniert dies nicht.
Habt ihr ähnliche Erfahrungen bzw. Probleme damit gehabt und eine Lösung für mich?
Grüße