Navigation

Im- und Export

Für den Im- und Export von Daten in Textdateien, kann man entweder DoCmd.TransferText
verwenden oder man gestaltet diesen von Hand.

Dafür öffnet man eine Datei mit der Open-Methode und kann dann entweder
mit Line Input oder Print arbeiten. Hier 2 Beispiele, wie man Daten mit einem
Recordset lesen oder schreiben kann.



Import:

Dim rs      	As DAO.Recordset
Dim sDatei  	As String
Dim Zeile   	As String
Dim varArray    As Variant
Dim i       	As Integer
Dim strSQL  	As String

sDatei = "C:\DeineDatei.txt"

'//Existiert die Datei ?
If Dir(sDatei) <> "" Then

    Close #1
    '//Recordset öffnen
    strSQL = "SELECT * FROM Tabelle"
    Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenDynaset)

    '//Datei zum Einlesen öffnen.
    Open sDatei For Input As #1

    '//Schleife bis Dateiende.
    Do While Not EOF(1)

        'Zeile einlesen
        Line Input #1, Zeile
        
			'//Zeile in ein Array zerlegen,
			'//hier sind die einzelnen Werte durch ein Semikolon getrennt
			varArray = Split(Zeile, ";")
			
			'//Array durchlaufen und Werte an den Recordset übergeben
			rs.AddNew
			For i = LBound(varArray) To UBound(varArray)
				rs.Fields(i) = varArray(i)
			Next i
			rs.Update

    Loop
    
    '//Datei schließen.
    Close #1

Else
    MsgBox "Datei nicht gefunden"
End If

rs.Close
Set rs = Nothing




Export:

Dim rs      As DAO.Recordset
Dim strEx   As String
Dim Datei   As String
Dim i 		As Long

Datei = "C:\DeineDatei.txt"
Close #1

'//Recordset öffnen
strSQL = "SELECT * FROM Tabelle"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

'//Datei zum Export öffnen.
Open Datei For Output As #1

'//Recordset bis zum Ende durchlaufen
While Not rs.EOF
	strEx = ""
	'//Alle Feldwerte in einen String schreiben
	For i = 0 To rs.Fields.Count - 1
	    strEx = strEx & ";" & rs.Fields(i)
	Next i
	'//Das 1. Semikolon löschen
	strEx = Mid(strEx, 2)
	'//String an Datei übergeben
	Print #1, strEx
	rs.MoveNext
Wend

Close #1
rs.Close
Set rs = Nothing