Script um für eine Access- Abfrage Datensätze in jeweils eine Datei zu exportieren
Problem: ich möchte das Ergebnis einer Access-Abfrage für jeden einzelnen Datensatz eine eigene Text-Datei ausliefern. Die Abfrage läuft in Access und hätte z.B. 4 Ergebnisse. Ich würde jetzt mittesl VBA-Script die Abfrage starten. Im Ergebnis wünsche ich mir dann halt 4 Dateien, wobei jeder Dateiname u.a. eine Zufalszahl beinhaltet..
Müsste ich jetzt über For Each .. Next gehen, um für jeden Datensatz eine txt-Datei zu schreiben? ich würde gerne das*.vbs-Sript in den Windows-Sceduler legen, um es z.B. alle 15 min laufen zu lassen. Oder geht das noch anders?
Müsste ich jetzt über For Each .. Next gehen, um für jeden Datensatz eine txt-Datei zu schreiben? ich würde gerne das*.vbs-Sript in den Windows-Sceduler legen, um es z.B. alle 15 min laufen zu lassen. Oder geht das noch anders?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 333412
Url: https://administrator.de/contentid/333412
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
11 Kommentare
Neuester Kommentar
Problem
Erst mal Moin, oder hat man dir keinen Anstand beigebracht?!Aus der hohlen Hand z.B. so (Pfade, Spaltennamen etc. anpassen)
Sub Test()
Dim rec, fso, fname, outline
Set fso = CreateObject("Scripting.FilesystemObject")
Const OUTPATH = "c:\Data"
Set rec = Currentdb.OpenRecordset("DeineAbfrage")
while not rec.EOF
fname = OUTPATH & "\record_" & GetRandomValue & ".txt"
while fso.FileExists(fname)
fname = OUTPATH & "\record_" & GetRandomValue & ".txt"
wend
outline = Join(Array(rec.Fields("Spalte1").Value,rec.Fields("Spalte2").Value,rec.Fields("Spalte3").Value),";")
fso.OpenTextfile(fname,2,True).Writeline(outline)
rec.MoveNext
wend
End Sub
Function GetRandomValue()
dim chars, out, i, r
chars = "abcdefghijklmnopqrstuvwxyz1234567890"
for i = 1 to 10
Randomize
r = Int ((36 - 1 + 1) * Rnd + 1)
out = out & Mid(chars,r,1)
Next
GetRandomValue = out
End Function
Gruß p.
Klar, machbar ist alles. Hat aber jetzt so viel mit der Frage zu tun wie ein Fisch mit ner Kuh.
Na dann, noch einen Haken dran und fertig.
Gruß p.
Gruß p.
Das Skript ist zum Ausführen in Access ausgelegt, nur dort existiert CurrentDB.
Außerhalb musst du erst mit CreateObjekt das Access-Application-Object erzeugen.
http://stackoverflow.com/questions/20403424/script-to-open-access-datab ...
Also besser die Makros in die DB packen, und im Skript nur Access starten und darin dann das Makro.
Außerhalb musst du erst mit CreateObjekt das Access-Application-Object erzeugen.
http://stackoverflow.com/questions/20403424/script-to-open-access-datab ...
Also besser die Makros in die DB packen, und im Skript nur Access starten und darin dann das Makro.
kann ich nochmal auf die Kuh mit dem Fisch zurückkommen?
Das ist nicht der Sinn eines Forums das man zig unterschiedliche Fragen in einen einzigen Thread packt, das verwirrt nur die User die hier vorbei kommen und anhand des Titels etwas ganz anderes erwarten!Kann ich aus Access heraus auch Outlook z.B. einen Termineintrag übergeben?
Ja.Wie du die Felder des Records ansprichst siehst du ja oben rec.Fields("SpalteX").Value. Die weist du jeweils deinen Feldern zu fertig.