Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

verwaister Verzeichnispfad

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

⏪ vorheriges - nächstes ⏩

Guenther

Liebe AccesslerInnen! Ich könnte mal Hilfe gebrauchen.
Ich habe in einer DB eine Tabelle mit den Namen aller Mitglieder. Für jedes Mitglied wird, sofern ein Brief erstellt wird, auf einem Netzlaufwerk ein Verzeichnis erstellt. Nun hat sich leider ergeben, dass Namen gelöscht wurden, das Verzeichnis auf dem Netzwerk aber nicht. Das ist inzwischen ausgeschlossen, trotzdem liegen einige verwaiste Verzeichnisse dort.
Nun würde ich gerne in einer Schleife das Netzlaufwerk durchgehen und mir die verwaisten Verzeichnisse in einer MsgBox anzeigen lassen. Könnte mir da jemand auf die Sprünge helfen - DANKE  :D

daolix

Hallo
du könntest per Dos'en-Dir die Namen der Verzeichnisse in eine Textdatei umleiten und diese dann als Grundlage einer Abfrage mit z.B. einer Where Not In - Klausel mit deiner Namenstabelle abgleichen und dir dann die überschüssigen Verzeichnisse anzeigen lassen.

Guenther

Hallo daolix,
leider kann ich mit "Dos'en-Dir" nichts anfangen :( Kannst du deinen Vorschlag etwas konkretisieren? Nehmen wir an, mein Netzlaufwerk lautet J:, das Hauptverzeichnis Daten und für jedes Mitglied wird in diesem Ordner ein Unterordner angelegt.
Danke :)

daolix

Hallo
mit Dos'en-Dir ist der "DOS" - Dir-Befehl des Commandozeileninterpreters gemeint.

Folgendes Bsp geht von der Annahme aus das die einzelnen Verzeisnissnamen der Mitglieder ein entsprechendes Feld in einer deiner Tabellen besitzen. (großgeschriebenes anpassen)

dim s as string
call createobject("wscript.shell").run("cmd.exe /c dir j:\daten\ /b /ad  1>j:\daten\sdir.txt", 0, true)
with currentdb.openrecordset("select f1 from [text;database=j:\daten\;hdr=no].sdir.txt where (((f1) not in (select DEIN_ID_FELD from DEINE_TABELLE)));")
do while .eof = false
s = s & .fields(0).value & vbcrlf
.movenext
loop
.close
end with
msgbox s
kill "j:\daten\sdir.txt"


Guenther

Hallo daolix,
Danke für den Code!  :D Leider kann ich den Code nicht mehr vor nächsten Montag einpflegen. Ich gebe dann Rückmeldung.

Guenther

Hallo daolix,
konnte mich leider erst heute wieder der Sache widmen.
Die select-Anweisung habe ich entsprechend angepasst. Beim Ausführen erhalte ich leider eine Fehlermeldung in Zeile 3 (with currentdb.openrecordset("select f1 from [text;database=j:\daten\;hdr=no].sdir.txt where (((f1) not in (select DEIN_ID_FELD from DEINE_TABELLE)));"). Es könne das Objekt -sdir.txt- nicht gefunden werden. :-\.
Zugriff auf das Netzlaufwerk liegt vor. Es scheint so, als ob die sdir.txt nicht erstellt wird. Hast du eine Idee?
DANKE

Lachtaube

Man könnte ja durchaus einmal nachsehen, ob die Datei sdir.txt vor dem Auftreten des Fehlers existiert.
Grüße von der (⌒▽⌒)

Guenther

Hallo Lachtaube,
die Datei besteht eben nicht- daher kann eben dann auch nicht darauf zugegriffen werden. Mir ist leider nicht klar, warum sie erstellt wird.

Lachtaube

Der Zweck liegt darin begründet, alle Verzeichnisnamen zu ermitteln, damit in einer SQL-Abfrage die Verzeichnisnamen ausgeschlossen werden können, die keine Waisen sind - also nur die Waisen übrig lassen.

Kannst Du die Datei denn in einer Eingabeaufforderung-Sitzung manuell anlegen? Zuerst J: eingeben, danach cd \daten eintippen und anschließend den Befehl dir /b /ad > sdir.txt absetzen (jede Eingabe jeweils mit der Eingabetaste abschließen). Danach prüfen, ob die Datei sdir.txt im Verzeichnis existiert.
Grüße von der (⌒▽⌒)

Guenther

Hallo Lachtaube,
das geht- die Datei wird erstellt!

Lachtaube

Dann sollte der Code von Daolix ja laufen, wenn Du die zweite und letzte Zeile auskommentierst.
Grüße von der (⌒▽⌒)

Guenther

DANKE! Werde das nochmals probieren.

DF6GL

Hallo,

Access mag die Punkte in der verknüpften Tabelle nicht..
Ein Aliasname löst das Problem:

with currentdb.openrecordset("select T.f1  from [text;database=j:\daten\;hdr=no].sdir.txt as T where (((T.f1) not in (select DEIN_ID_FELD from DEINE_TABELLE)));")

Guenther

Hallo!
Konnte inzwischen wieder mit dem Problem beschäftigen. Es ist definitiv so, dass die txt-Datei in Zeile nicht erstellt wird. Wenn ich sie manuel über die Eingabeaufforderung erstelle, dann läuft der Code in der restlichen Form wie von daolix vorgeschlagen durch. Das von DF6GL angedeute Problem zeigt sich nicht.
Leider werden aber in der MsgBox dann ALLE Namen angezeigt. Mit dem Filter klappt es leider noch nicht. Habe in meiner Tabelle ein Feld exakt den Namen des Verzeichnisses auf dem Laufwerk entspricht. Dieses habe ich in der select-Anweisung eingepflegt. Müsste ich den Code von einem Formular mit den Namen aus aufrufen?

daolix

Hallo
Wenn keine txt Datei erstellt wird  (auch keine 0-Byte große) könnte es bedeuten das wscript wohl nicht ausgeführt wird. K.A warum. Sicherheitseinstellungen?
In der Textdatei stehen nur die Namen der Verzeichnisse von J:\Daten\ (z.B. Guenther BeiAOM). In deiner Tabelle sollte dann auch nur das stehen, nicht der komplette Path, oder zusätze wie z.B. ein backslash.
ZitatMüsste ich den Code von einem Formular mit den Namen aus aufrufen?
Nein. den Code in ein Modul als Sub einfügen und diese Sub Ausführen.