Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

verwaister Verzeichnispfad

Begonnen von Guenther, Februar 16, 2018, 11:32:57

⏪ vorheriges - nächstes ⏩

Guenther

Könnten Leerstellen ein Problem sein? Grundsätzlich steht in der Tabelle exakt dasselbe wie in der Textdatei.

Guenther

Könnten Leerstellen ein Problem sein? In meiner Tabelle steht exakt dasselbe wie in der Textdatei!

daolix

#17
Ein schneller Test mit Leerstellen zwischen den Wörtern lief bei mir zumindest ohne Probleme.
Wenn das jetzt bei dir nicht funktioniert dann ggf eine VBA-Dir Lösung mit z.b. DLookup (anpassen)
dim d$, p$, s$
p = "j:\daten\
d = dir(p, vbdirectory)
do while len(d)
if ((getattr(p & d) and vbdirectory) = vbdirectory) and ((d <> ".") and (d <> "..")) then
if nz(dlookup("EIN_FELD", "DEINE_TABELLE", "DEIN_ID_FELD='" & d & "'"), "null") = "null" then s = s & d & vbcrlf
end if
d = dir()
loop
msgbox s

Guenther

DANKE für die Rückmeldung ;) Keine Ahnung, warum es bei mir nicht geht.

Guenther

Sorry! Muss nochmal nachhaken - verstehe leider nicht ganz, was in dem dlookup-befehl mit "Ein_Feld" gemeint ist.  :-\

Lachtaube

EIN_FELD kann irgendein existierender Pflichtfeldname sein. Denn findet das Kriterium keinen Wert, wird das 2. Argument der Nz-Funktion wirksam und der Code folgend auf Then ausgeführt.
Grüße von der (⌒▽⌒)

Guenther

SORRY! Ich komme leider nicht weiter. Es wird leider in der MsgBox immer alle Namen angezeigt. Der zweite Code führt bei mir zum Absturz der Anwendung  :(
Gibt es einen Tipp, was ich falsch machen könnte? Wäre dankbar dafür :)
Oder gibt es noch eine Alternative? Schon mal DANKE!

Guenther

Ich schätze, dass mein Problem Kommas und Leerstellen in den Verzeichnisnamen sind. Ist es so, dass der Code die Daten der txt-Datei gleich behandelt, als ob ich daraus eine Tabelle erstellen möchte. Dann ist klar, dass da nichts vernünftiges daraus werden kann. Werde jetzt die txt-Datei mit Umlauten erstellen und von Hand eine Tabelle erstellen, welche ich dann in einer Abfrage mit dem Feld in meiner Ausgangstabelle abgleiche. Könnte man eine brauchbare Tabelle via Code erstellen, welche den ganzen Verzeichnisname in ein Feld fasst?

Frithjiof

Hallo  Guenther

Hier eine VBA-Prozedur die dein Problem lösen sollte.

Mit <Dir(sPath, vbDirectory)> wird  das aktuelle Verzeichnis gesetzt und der erste Eintrag zurückgegeben.
Wenn sPath existiert ist der erste Eintrag ein "." der zweite "..".
Alle nachfolgenden Aufrufe von <Dir()> ohne Parameter liefern einen Eintrag nach dem anderen.

In der Variablen sDir befindet sich der Verzeichnisname.  Dieser muss in deiner Datenbank existieren.
In meinem Beispiel ist  Verzeichnisname =  Mitgliedsnummer ("Mitglnr")
Sollte er nicht existieren, dann löschen.
Meine Routine verschiebt das Verzeichnis mit  Name sOldName As sNewName sicherheitshalber in ein anderes Verzeichnis. (sNewPath = "C:\Ablage\kill\").


Sub meindeldir()
    Dim sDir As String
    Dim sPath As String
    Dim sNewPath As String
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
    Dim sNewName As String
    Dim sOldName As String
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("select DBO_Adresse.Mitglnr from DBO_Adresse;")
     sPath = "C:\Ablage\Schrift\"
     sNewPath = "C:\Ablage\kill\"
     sDir = Dir(sPath, vbDirectory)
     Do While sDir <> ""
        If sDir <> "." And sDir <> ".." Then
            rst.FindFirst ("MITGLNR ='" & sDir & "'")
            If rst.NoMatch = True Then
                sNewName = sNewPath & sDir
                sOldName = sPath & sDir
                Name sOldName As sNewName
            End If
        End If
        sDir = Dir()
     Loop
    rst.Close
    dbs.Close
End Sub

Du müsstest die Verzeichnisse anpassen, bzw anlegen und den Recordset dann sollte es laufen.
Frithjof

Guenther

DANKE an alle, die für mich mitgehirnt haben.
Habe mein Problem etwas konventioneller gelöst. Das erste Problem waren die Umlaute, habe zuerst in der Eingabeaufforderung den Code-Satz geändert, so dass ich eine Textdatei erhalte, die die Umlaute in den Verzeichnisnamen berücksichtigt. Dann habe ich eine Abfrage erstellt und darüber die "verwaisten" Verzeichnisse anzeigen lassen. Leider nicht ganz so elegant, aber Lösungsorientiert. Problem gelöst  :)