Neuigkeiten:

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

Mobiles Hauptmenü

Alle Dateien eines Verzeichnises importieren

Begonnen von mohab, Januar 28, 2015, 11:21:14

⏪ vorheriges - nächstes ⏩

mohab

Hallo zusammen,

ich habe einen Code der eine CSV-Datei in meine Datenbank importiert. Die Datei (jeweils mit neuem Zeitstempel) wird in ein bestimmtes Verzeichnis automatisch abgelegt, ich hole sie ab, und lösche sie.
Nun würde ich gerne den Code so ändern, dass der Vorgang automatisch solange wiederholt wird, bis keine Datei mehr in dem Verzeichnis liegt. So müsste der User nicht 20x pro Stunde klicken. Kann mir jemand sagen wie ich meinen Code verändern müsste?
Private Sub Befehl204_Click()
MsgBox "Datenimport gestartet... bitte warten"
On Error GoTo error
  Dim Dateiname As String
Dateiname = Dir("PFADNAME\dateiname_????????-?????????.csv")

     DoCmd.TransferText acImportDelim, "importspezifikation", "tbl1_temp", "\\PFADNAME" & Dateiname
With CurrentDb
        .Execute "qry1_Anfügen"
End With
CurrentDb.Execute "DELETE FROM tbl1_temp", dbFailOnError
Kill "PFADNAME" & Dateiname
MsgBox "neue Daten wurden importiert, bitte prüfen"
Exit Sub
error: MsgBox "keine neuen Daten vorhanden"
End Sub


Vielen Dank für eure Hilfe!
Grüße,
Mohab

bahasu

Hi,

vielleicht erreichst Du Dein Ziel, indem Du das Zeitereignis verwendest.
Im Formular bei "Bei Zeitgeber" als VBA-Code eintragen:
call Befehl204_Click
und bei Zeitgeberintervall einen Wert in der Größenordnung:
3600 * 1000 / 20 : bitte selber ausrechnen

Ich würde allerdings die msgbox-Anweisungen ersetzen durch Anzeigen, die keine Bestätigungseingabe erfordern.

Harald
Servus

mohab

Servus Harald,

danke für den Denkansatz, aber das ist nicht genau was ich suche, da ich dann den vorgang ja unnötig in die länge ziehen würde, falls zum Beispiel nur 1 Datei vorhanden wäre...!


DF6GL

Hallo,

bau eine Schleife ein, die solange durchlaufen wird, bis die Dir()-Funktion einen Leerstring zurückgibt...

Die Prozedur kann dann mit Hilfe des Formular-Timers z. B. jede Stunde ausgeführt werden.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mohab

Servus Franz,

ja, das ist das was ich gerne tun würde. Kannst du mir mit dem Code evtl helfen? Wo müssten die Zeilen eingefügt werden, und wie müssten diese aussehen?
(die timerfunktion bekomm ich alleine hin, mir geht's nur um die schleife)
Ich hab da ein wenig Respekt davor, weil ich keine endlosschleifer oder unnötige Wiederholung produzieren will.

Vielen Dank für deine Hilfe!

DF6GL

Hallo,

naja, so eine Schleife solltest Du auch selber hinbekommen...


Do Until Dir("PFADNAME\dateiname_????????-?????????.csv") =""
.
.
.
Loop
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mohab

Hi,

ich weiß, das mag für nen Guru wie dich vielleicht abwegig sein, aber ich bekomm das leider nicht hin.

Die Bedingung "Do Until Dir("PFADNAME\dateiname_????????-?????????.csv") ="" " ist klar
Aber ich füge Sie scheinbar nicht richtig in meinen Code ein....!

mohab

hat sich erledigt... 1 endlosschleife später rufe ich: try & error ftw !  :D
Antwort auf meine eigene Frage:
direkt vor die Zeile "Dateiname = Dir(...." dann klappts.

Danke trotzdem Franz!