Netzwerklaufwerk Verbindung prüfen

Moderator: ModerationP

Netzwerklaufwerk Verbindung prüfen

Beitragvon Tobias.Vetter » 25. Okt 2021, 15:14

Hallo ihr lieben, auch wenn ich nachher wieder gesteinigt werde hier meine Frage :)

Meine Datenbank hat Funktionen für die eine aktive Netzwerkverbindung zu einer NAS notwendig ist.
Wenn die Verbindung nicht hergestellt ist, soll der VBA Code jene herstellen.
Soweit so gut, hier mein Code:

Code: Alles auswählen
Sub cNetzwerktest()
 If Dir(cDaten, vbDirectory) = "" Then                                                              '<- keine Verbindung zum Netzwerkpfad, entsprechend reagieren ->
   
    Dim mount As String
    Dim Pfad As String
    Dim Benutzer As String
    Dim Passwort As String
    Dim Befehl As String
     
           
    mount = "v: "                                                   
    Pfad = "\\xxxx\yyy"
    Benutzer = "Vetter"
    Passwort = "0123456789"
 
    Befehl = "net use " & mount & " " & strServer & " " & strPass & " /user:" & strUser

    Shell Befehl

    If Dir(cDaten, vbDirectory) = "" Then
    MsgBox ("Bitte prüfe dein Netzwerk, hier geht irgendetwas nicht!")   
    Else
    Forms!FallAuftragFall.Fall_Ordner.Enabled = True
End If
Forms!FallAuftragFall.Fall_Ordner.Enabled = True
End If


Die Verbindung wird auch hergestellt, nur wird der nachstehende Button nicht freigegeben.
Kann es sein, dass ich den Shell Befehl in einen Loop setzen muss?

Leider komme ich mit folgendem Link nicht weiter:
https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/do-loop-statement

Im folgenden Beispiel werden die -Anweisungen in der -Schleife weiter ausgeführt, bis die index Variable größer als 10 ist. Die Until -Klausel befindet sich am Ende der Schleife.

Dim index As Integer = 0
Do
Debug.Write(index.ToString & " ")
index += 1
Loop Until index > 10

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10


Danke für eure Hilfe.
Grüße Tobias
Zuletzt geändert von Tobias.Vetter am 26. Okt 2021, 12:11, insgesamt 2-mal geändert.
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 60
Registriert: 09. Okt 2020, 09:11

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon Gast » 26. Okt 2021, 11:46

Kann mir hier niemand weiterhelfen?
Gast
 

Re: [Gelöst] Netzwerklaufwerk Verbindung prüfen

Beitragvon Tobias.Vetter » 26. Okt 2021, 12:06

Edit: der geänderte Versuch, klappt nur, wenn das Netzwerk auch erreichbar ist.

Code: Alles auswählen
   
Set sh = CreateObject("WScript.Shell")

sh.Run strCommand, , True


Wenn das Netzwerk aus irgendeinem Grund nicht erreichbar ist, hängt sich der PC auf.
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 60
Registriert: 09. Okt 2020, 09:11

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon Bitsqueezer » 26. Okt 2021, 12:43

Hallo,

ist Google schon wieder kaputt? Die müssen da echt mal ran...

https://www.vbarchiv.net/tipps/details.php?id=97

Im übrigen sollte man nicht in die Doku von Visual Basic schauen, wenn man VBA programmiert... :roll:

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8492
Registriert: 21. Jun 2007, 12:17

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon Tobias.Vetter » 26. Okt 2021, 12:49

Danke Christian für die Antwort.

Grundlegend Fragt der im link erwähnte Befehl ab, ob das Laufwerk zu Verfügung steht oder nicht.
Jetzt soll er bei nicht Verbunden das Laufwerk verbinden.

Das wollte ich mit diesem Befehl erzwingen.
Code: Alles auswählen
    Dim mount As String
    Dim Pfad As String
    Dim Benutzer As String
    Dim Passwort As String
    Dim Befehl As String
     
           
    mount = "v: "                                                   
    Pfad = "\\xxxx\yyy"
    Benutzer = "Vetter"
    Passwort = "0123456789"
 
    Befehl = "net use " & mount & " " & strServer & " " & strPass & " /user:" & strUser

    Shell Befehl


Soweit so gut. Nur braucht der Shell Befehl etwas Zeit, sodass die weiteren Anweisungen nicht berücksichtigt, ausgelöst werden.
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 60
Registriert: 09. Okt 2020, 09:11

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon knobbi38 » 26. Okt 2021, 14:51

Hallo Tobias,

ich würde das nicht mit der Shell machen, sondern mit dem WScript.Network Objekt.
Siehe mal hier:
https://www.devguru.com/content/technologies/wsh/wshnetwork-mapnetworkdrive.html

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3587
Registriert: 02. Jul 2015, 14:23

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon Tobias.Vetter » 27. Okt 2021, 06:32

Danke Ulrich für deine Antwort,
leider bekomme ich den Code nicht in meine Datenbank implementiert.

Die Verbindung zu meiner NAS würde ja über meinen angegebenen Code funktionieren, nur alle folgenden Argumente wie die MsgBox oder den Butten Enabled auf True setzen klappen nicht.
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 60
Registriert: 09. Okt 2020, 09:11

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon ComputerVersteher » 28. Okt 2021, 19:10

Hi Tobias,

Du musst den Code von Ulrich richtig anpassen
Code: Alles auswählen
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive mount, Pfad, ,Benutzer, Passwort
Set WshNetwork  = Nothing
statt
Code: Alles auswählen
Befehl = "net use " & mount & " " & strServer & " " & strPass & " /user:" & strUser

Shell Befehl
Und nach dem vorletzten End If fehlt doch noch ein Else, oder nicht? Rücke auch den Code der Ifs richtig ein.

Am besten benutzt Du aber gar keine Netzlaufwerke sondern den UNC-Pfad zur Freigabe, denn der Laufwerksbuchstabe könnte ja schon anderweitig in Benutzung sein

Gruß CV
"Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."
Benutzeravatar
ComputerVersteher
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 552
Registriert: 23. Jul 2016, 18:17

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon Tobias.Vetter » 29. Okt 2021, 12:14

Danke ComputerVersteher,

leider kommt weiterhin ein Fehler auf, und zwar in folgender Zeile:

Code: Alles auswählen
Set WshNetwork = WScript.CreateObject("WScript.Network")
Tobias.Vetter
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 60
Registriert: 09. Okt 2020, 09:11

Re: Netzwerklaufwerk Verbindung prüfen

Beitragvon knobbi38 » 29. Okt 2021, 12:33

Hallo Tobias,
die Syntax sollte richtigerweise
Code: Alles auswählen
Set WshNetwork = CreateObject("WScript.Network")

heißen. Da hättest du jetzt aber auch selber darauf kommen können. :roll:
Mein Link behandelte WSH (VBScript) und das muß natürlich erst an VBA adaptiert werden, was ja i.A. nicht so schwierig ist.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3587
Registriert: 02. Jul 2015, 14:23


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Bitsqueezer, Stj68 und 8 Gäste