Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme beim Vergleich von Ordnernamen

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

ich brauch wieder einmal eure Hilfe.

Ich habe ein Formular, über das ich über einen Button in einen Windows-Ordner springen und dort dann Bilder abzuspeichern bzw. anzusehen kann. Der Computer springt automatisch in den Ordner, der den gleichen Namen des Datensatz hat. Der Datensatz besitzt eine QM-Nr. und der Ordner wird gleich genannt. Die QM-Nr. ist wie folgt aufgebaut: Zuerst die „08“ für das aktuelle Jahr und dann die „001“, „002“, „003“… für den Auftrag; Folglich also „08001“, „08002“, 08003“

Bis jetzt funktioniert auch alles wunderbar, doch nun soll ich einen Altbestand von ca. 1000 Ordnern einbinden, deren Namen zwar mit der QM-Nr. beginnen aber danach noch etwas folgt (z.B. „01005 Pleuel“ ).

Mein jetziger Code ist:

Private Sub Befehl37_Click()

Dim Pfad As String

Pfad = "D:\Tobias\" & Me.QM_Nr

If Dir(Pfad, vbDirectory) <> "" Then

Me.Application.FollowHyperlink Pfad

Else

MkDir (Pfad)

Me.Application.FollowHyperlink Pfad

End If

End Sub

Gibt es eine Möglichkeit, dass der Computer nicht den kompletten Ordnernamen vergleicht sondern nur die ersten fünf Stellen heranzieht??

Bitte um eure Hilfe.

Schon mal Danke.

Gruß Tobias

PS:Ich verwende Access 07

Moin,


...

Pfad = "D:\Tobias\" & Me.QM_Nr

...

Gibt es eine Möglichkeit, dass der Computer nicht den kompletten Ordnernamen vergleicht sondern nur die ersten fünf Stellen heranzieht??
ja, klar:

...

Pfad = "D:\Tobias\" & left(Me.QM_Nr, 5)

...

hth

Reinhold

Hi Reinhold,

des hab ich auch schon ausprobiert, aber so funktiert es irgendwie nicht.

Er erzeugt trotzem den neuen Ordner "08112" und geht nicht in den schon vorhandenen Ordner "08112 Pleuel".

Ich habs auch schon mit

Pfad = "D:\Tobias\" & left(Me.QM_Nr, 5) & "*"

versucht, aber da kommt dann der folgende Fehler:

"Laufzeitfehler 490: Die angegebene Datei konnte nicht geöffnet werden."

Hi Reinhold,

des hab ich auch schon ausprobiert, aber so funktiert es irgendwie nicht.

Er erzeugt trotzem den neuen Ordner "08112" und geht nicht in den schon vorhandenen Ordner "08112 Pleuel".

Ich habs auch schon mit

Pfad = "D:\Tobias\" & left(Me.QM_Nr, 5) & "*"

versucht, aber da kommt dann der folgende Fehler:

"Laufzeitfehler 490: Die angegebene Datei konnte nicht geöffnet werden."

Ah, verstehe. Das wird so auch nix. Du kannst somit lediglich in einer Schleife über alle Verzeichnisse prüfen, welche alle mit deinen 5 Zeichen anfangen. Aus den Treffern kannst du dann eine Auswahl erzeugen.

Es kann ja theoretisch unendlich viele Verzeichnisse geben, die mit diesen 5 Zeichen anfangen und du kannst definitv nur in genau eins wechseln.

hth

Reinhold

Aso,

aber ich hab definitiv immer nur einen Ordner, der zur entsprechenden QM-Nr. passen würde. Kann man dem Computer nicht den Befehl geben, dass er einfach den ersten passenden Ordener nimmt??

Moin,

probier es mal so: (ACHTUNG, wie immer ungetestet):


Private Sub Befehl37_Click()

    Dim Pfad As String, Ordner As String


    Pfad = "D:\knurpsel\" & Me.QM_Nr & "*"

    If Dir(Pfad, vbDirectory) <> "" Then

        Ordner = Dir(Pfad, vbDirectory)

        Application.FollowHyperlink Ordner

    End If

End Sub

Hi,

Wenn ich nun aber deinen Code verwende kommt, dass ein Sicherheitsrisiko besteht. Ich hab da mal ein screenshot angefügt:

post-45193-14430447891488_thumb.jpg

Wenn ich dann auf "Ja" geh, kommt der gleiche Fehler wie oben: Laufzeitfehler 490.

Wenn ich auf "Nein" geh, kommt: "Laufzeitfehler 16388: Der Hyperlink kann nicht zum Ziel verfolgt werden."

Wenn ich dich richtig verstehe, dann willst du doch nur den Ordner öffnen? Also ohne jede Interaktion mit Access? Dann gehts so:


Private Sub OpenOrdner()

    Dim Pfad As String, PfadUndOrdner As String, Ordner As String


    Pfad = "C:\Programme\"

    PfadUndOrdner = Pfad & Me!QM_Nr & "*"

    If Dir(PfadUndOrdner, vbDirectory) <> "" Then

        Ordner = Dir(PfadUndOrdner, vbDirectory)

        Shell "explorer.exe " & Pfad & Ordner, vbNormalFocus

    End If

End Sub

Den Rest kriegst du ja jetzt hin, oder?

Reinhold

Hallo Reinhold,

danke für die deine Lösung.

Ich hab nun folgenden Code geschrieben:

Public Function BilderOrdnerSuchenOeffnen()

Dim Pfad As String

Dim PfadUndOrdner As String

Dim Ordner As String


Pfad = DLookup("pfad", "aageji_pfade", "pfadid = 60")

PfadUndOrdner = Pfad & Forms!frmstammdaten![QM-Nr] & "*"


If Dir(PfadUndOrdner, vbDirectory) <> "" Then

      Ordner = Dir(PfadUndOrdner, vbDirectory)

      Shell "explorer.exe " & Pfad & Ordner, vbNormalFocus

Else

      MkDir (Pfad & Forms!frmstammdaten.[QM-Nr])

      Forms!frmstammdaten.Application.FollowHyperlink (Pfad & Forms!frmstammdaten.[QM-Nr])

End If

End Function

Und den Pfad hab ich in einer Tabelle hinterlegt, da ich mehere Pfade haben werden.

Nochmals Danke für deine Hilfe.

Gruß Tobias

  • 2 Wochen später...

Hallo zusammen,

ich bins nochmal zum gleichen Thema. Es ist ein weiteres Problem in diesem Zusammenhang aufgetreten.

Es besteht folgendes Problem:

Wenn der Ordner Name "08015 Pleuel" heißt funktioniert alles wunderbar, wenn nun aber der Ordner den Namen "08015 Pleuel, Oberschalle" hat geht die Funktion nicht mehr. Es kommt dann der Fehler: Der Pfad Oberschalle ist nicht vorhanden oder verweist auf kein Verzeichnis.

Muss ich folglich alle Ordner umbennen und alle Ordnernamen ohne "Komma" schreiben, oder gibt es da einen anderen Weg um mein Problem zu lösen.

Alle Ordner umzubenennen würde für mich einen sehr großen Aufwand bedeuten, da es um die 2000 Ordner gibt, die fast alle ein Komma in ihrem Ordnernamen haben.

Bitte um Hilfe.

Moin,

ich tippe mal darauf, dass du den Pfad in Anführungszeichen setzen solltest, also:


Shell "explorer.exe " & chr(34) & Pfad & Ordner & chr(34), vbNormalFocus

hth

Reinhold

Danke.

Habs so gemacht und funktioniert auch.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.