Access Abfrage zur Steuerung anderer Programme

Hallo,
In einem Verzeichnis C:\Quelle sind viele Dateien. Einige davon sollen in das Verzeichnis C:\Ziel kopiert werden. Die Adressen der zu kopierenden Dateien stehen in der eineer Accessabfrage namens Adressen
Es sind bei jeder Aktion unterschiedliche Dateien mit unterschiedlicher Anzahl. Ich denke also zunächst muß die Anzahl der Kopiervorgänge ermittelt werden, dann eine Schleife gestartet werden welche eine indirekte Adressierung anwendet.
Zur Verdeutlichung nochmals.Die Pfade stehen in der Abfrage Adressen welche abgearbeitet werden muß.

Vorher
C:\Quelle mit den Dateien a.txt, b.txt, c.txt, d.txt
C:\Ziel ohne Inhalt
Abfrage Adressen mit Datensatz_1: C:\Quelle\b.txt
Datensatz_2: C:\Quelle\d.txt

Nachher
C:\Quelle mit den Dateien a.txt, b.txt, c.txt, d.txt
C:\Ziel mit den Dateien b.txt, d.txt

Hallo Jürgen,

versuchs mal mit diesem Object:
Set myFSO = CreateObject(„Scripting.FileSystemObject“)

Für Scripting.FileSystemObject gibt es in der Hilfe eine ausführliche Dokumentation
Rekursives Durchsuchen von Directories auf Festplatten ist ebenfalls gut beschrieben.

Hier auch mal 'ne Diskussion über dieses Thema:
/t/file-kopieren–2/3166279

Gruß
Manfred

Hallo,

versuch es mal hiermit. Ist aber nicht getestet.

Function Kopieren(Ziel As String, Quelle As String)
Dim fso, F1, s
Set fso = CreateObject(„Scripting.FileSystemObject“)
Set F1 = fso.GetFolder(Quelle)
F1.Copy (Ziel)

End Function

Grüße
fian03

Hallo ich liege zur Zeit mit Grippe im bett ich mag nicht überlegen

Gruß
Thomas

Hi,
ich würde evtl. so ansetzen:

  1. in VBA ein Recordset über die Abfrage erstellen
  2. eine Schleife mit While not recordset.EOF … movenext … Wend schreiben, in der
  3. für jeden Datensatz ein String „MOVE " & Quellpfad & " C:\ZIEL“ & vbCR erstellen und in eine Datei schreiben
  4. diese Datei z.B FLUTSCH.BAT nennen
  5. shell „CMD FLUTSCH.BAT“ führt die Kopierbefehle aus.

Zu 2: Mit While not recordset.EOF brauchst du kein RecordCount.
Zu 3. Welcher Schreibbefehl am geschicktesten ist, musst du selber herausfinden, ich hab seit Jahren nicht mehr mit Access gearbeitet.

Alternativ könntest du

1a die MOVE-Befehle per Erstellungsabfrage in ne temporäre Tabelle schreiben
2a die Tabelle als CSV-Datei namens FLUTSCH.BAT exportieren und
5. wie gehabt ausführen

Ist vermutlich sogar einfacher und läuft schneller.

Ich erinnere mich dunkel an einen Klassenmodul namens FileSystemObject, mit dem ginge es rein in VBA, aber das macht nur Umstände.

Viel Spaß
Thomas

Hallo jwiejuergen,

unter der Voraussetzung, das die Abfrage Adressen immer aktuell ist, könnte Folgendes funktionieren:

dim rst as recordset, quelle as string, ziel as string

set rst=currentdb.Openrecordset(„Adressen“)
ziel=" hier den Zielpfad eingeben "
do until rst.eof
quelle=" hier den Quellenpfad eingeben " & rst!quellenname
FileCopy(quelle,ziel)
rst.MoveNext
loop

Gruß
JOGI

Hallo jwiejuergen,

in Sachen Access habe ich leider noch keine all zu großen Erfahrungen, da kann ich leider nicht weiter helfen.

Gruß Hugo