Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variabler Laufwerksbuchstabe bei ADODB-Connection

Variabler Laufwerksbuchstabe bei ADODB-Connection
23.02.2019 15:06:00
nenane
Hallo,
ich komme gerade auf keinen grünen Zweig. Ich habe eine Excel Datei mit der ich über eine ADODB Connection auf eine Access Datenbank zugreife, um mir Abfragen aus der Datenbank zu ziehen. Das funktionierte bisher einwandfrei. Jetzt bin ich an dem Punkt, wo der Laufwerksbuchstabe des Speicherorts der Datenbank variabel sein kann. Aus dem Forum habe ich mir dazu eine Hilfestellung geholt, mit der ich jetzt auch den korrekten Laufwerksbuchstaben ermittle. Das Problem ist, dass ich den String mit dem Dateipfad nicht korrekt in die Data Source eingesetzt bekomme. Anstatt des Laufwerks welches korrekt im String gespeichert ist, verbindet er den Namen des Strings mit dem Pfad.
Könnt ihr mir da weiterhelfen?

Sub str()
Dim bolFound As Boolean, strPath As String, strLaufwerk As String, i As Integer
strPath = ":\Ordner1\Ordner2\Datenbank\Test.accdb"
For i = 67 To 90 '67=C, 90=Z
strLaufwerk = Chr(i)
If Dir(strLaufwerk & strPath)  "" Then
bolFound = True
Exit For
End If
Next
If bolFound = True Then
With con
.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=""strLaufwerk" & ":\Ordner1\Ordner2\ _
Datenbank\Test.accdb"";Mode=Share Deny None;"
.Properties("Jet OLEDB:Database Password") = "*****"
.Open
End With
Else
MsgBox "Verzeichnis """ & strPath & """ auf keinem Laufwerk gefunden", _
vbInformation + vbOKOnly, "Datei öffnen-Dialg anzeigen"
End If
End Sub
LG nenane

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabler Laufwerksbuchstabe bei ADODB-Connection
23.02.2019 15:10:33
Sepp
Hallo ?,
Source= strLaufwerk & ":\Ordner1\Ordner2\Datenbank\Test.accdb"

 ABCDEF
1Gruß Sepp
2
3

Anzeige
oder besser
23.02.2019 17:04:57
Sepp
Hallo nochmal,
besser ist noch so.
Source= strLaufwerk & strPath

 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: oder besser
23.02.2019 17:16:58
nenane
hey danke für deine Vorschläge. Leider funktioniert genau das nicht. So bin ich anfangs auch rangegangen aber er checkt nicht, dass er den Inhalt der Variablen einsetzen soll.
mit dieser Zeile:
.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source= strLaufwerk+strPath;Mode=Share Deny None;"
zeigt er mir als Pfad strLaufwerk+strPath an, aber nicht G:\Ordner1\Ordner2\Datenbank\Test.accdb
AW: oder besser
23.02.2019 17:30:00
Sepp
Hallo ?,
ok, dann der gesamte Code.
Sub str()
  Dim bolFound As Boolean, strPath As String, strLaufwerk As String, i As Integer
  strPath = ":\Ordner1\Ordner2\Datenbank\Test.accdb"
  For i = 67 To 90 '67=C, 90=Z 
    strLaufwerk = Chr(i)
    If Dir(strLaufwerk & strPath) <> "" Then
      bolFound = True
      Exit For
    End If
  Next
  If bolFound = True Then
    With con
      .Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=" & strLaufwerk & strPath & ";Mode=Share Deny None;"
      .Properties("Jet OLEDB:Database Password") = "*****"
      .Open
    End With
       
  Else
    MsgBox "Verzeichnis """ & strPath & """ auf keinem Laufwerk gefunden", _
      vbInformation + vbOKOnly, "Datei öffnen-Dialg anzeigen"
  End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: oder besser
23.02.2019 17:33:45
nenane
Sauber, jetzt passts. Ich danke dir! Hast mir mein Wochenende gerettet :)
LG
Äusserst dilletantische Lösung...
23.02.2019 19:32:50
EtoPHG
Nenane,
Der Laufswerk-Buchstabe ist nicht variabel, sondern vom Mapping des Netzlaufwerks auf dem Client abhängig. D.h. Jeder Benutzer kann das Verzeichnis auf dem Netz nach seinem Gusto einem Laufwerksbuchstaben zuordnen. Darum ist es wichtig für eine solche Zugriffe den UNC-Path zu verwenden.
UNC steht für Uniform Naming Convention. Diesen Pfad kannst du über den Windows-Explorer rausfinden über Rechtsklick auf die Netzwerkdatei und UNC Path kopieren. Das könnte dann z.B. so aussehen: \\servername\serverVerzeichnis\se\Ordner1\Ordner2\Datenbank\Test.accdb, wobei der fett geschriebene Teil hier dem Netzverzeichnis entspricht, das einem beliebig freien Laufwerksbuchstaben zugeordnet werden kann.
Warum deine Lösung zu Fehler führen kann? Angenommen jemand kopiert die Datenbank auf ein lokales Laufwerk (z.B. E:), dann wird dein Code auf dieses zugreifen, statt auf die DB auf dem Netzwerk!
Viel Vergnügen mit den Anfragen von Benutzern, die dann anfragen, warum ihre Datenbank nicht auf dem neuesten Stand ist!
Gruess Hansueli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige