Hallo Zusammen
Mit dem folgenden Code lese ich Zeile für Zeile aus einem ASCII File aus. Eine Zeile beinhaltet einen ESR Datensatz der Bank (Zahlungseingänge). Mit dem Split nach Chr(10) kann ich die Daten selektieren, also immer ein Datensatz pro neue Linie. Die Daten werden dann weiterverarbeitet. Leider wird die erste Zeile nicht verarbeitet
Habt ihr ein Tipp, dass auch die erste Zeile verarbeitet wird?
Danke und Gruss
Manuel
Sub Click(Source As Button)
Dim session As New notessession
Dim db As notesdatabase
Dim doc As notesdocument, profdoc As Notesdocument, doc2 As Notesdocument
Dim Dateipfad As String, aktfile As String
Dim fileNum As Integer, cells As Integer, k As Long
Dim fileName As String
Dim InputStr As String, delimiter As String
Dim FieldArray As Variant
Dim esrCheckview As NotesView
Set db = session.currentdatabase
Set profdoc = db.getprofiledocument("Einstellungen")
Set esrCheckview = db.GetView ("EsrRef") ' EsrRef View nötig um zu checken, ob der Datensatz schon importiert ist
Dateipfad = profdoc.EinstellungenEsrFile(0) ' ESR Datei
fileNum = Freefile()
delimiter = Chr(10) ' Trennzeichen
aktfile = Dateipfad
If aktfile <> "" Then
Open aktfile For Input As fileNum%
Line Input #1, InputStr$
Do While Not Eof(fileNum%)
' Zeile für Zeile einlesen
Line Input #1, InputStr$
Messagebox InputStr$
FieldArray = Split(InputStr$,delimiter)
' Check ob ESR Datensatz schon eingelesen.
If Not Isempty(FieldArray) Then
Set doc2 = esrCheckview.GetDocumentByKey(fieldarray(0)) ' View mit allen vollen ESR
If Mid(FieldArray(0),1,3) <> "999" And doc2 Is Nothing Then ' Transaktion 999 Ignorieren, nur neue Datensätze einlesen
Call CreateDocument(db, FieldArray(0)) 'String übergeben
End If
End If
Loop
Messagebox "eof erreicht"
Else
Messagebox "Datei nicht vorhanden", 16, "Fehler"
End If
Close fileNum%
Exit Sub
End Sub
Du machst beim ersten Mal zweimal einen Line Input. Verschiebe mal die Line Input -Anweisung innerhalb der Schleife direkt vor die Loop-Anweisung. Dann sollte das funktionieren.
Line Input #1, InputStr$
Do While Not Eof(fileNum%)
' Zeile für Zeile einlesen
Messagebox InputStr$
FieldArray = Split(InputStr$,delimiter)
' Check ob ESR Datensatz schon eingelesen.
If Not Isempty(FieldArray) Then
Set doc2 = esrCheckview.GetDocumentByKey(fieldarray(0)) ' View mit allen vollen ESR
If Mid(FieldArray(0),1,3) <> "999" And doc2 Is Nothing Then ' Transaktion 999 Ignorieren, nur neue Datensätze einlesen
Call CreateDocument(db, FieldArray(0)) 'String übergeben
End If
End If
Line Input #1, InputStr$
Loop
Axel
Versuch's mal so:
...
Do Until EOF(fileNum%)
' Zeile für Zeile einlesen
Line Input #1, InputStr$
Messagebox InputStr$
FieldArray = Split(InputStr$,delimiter)
' Check ob ESR Datensatz schon eingelesen.
If Not Isempty(FieldArray) Then
Set doc2 = esrCheckview.GetDocumentByKey(fieldarray(0)) ' View mit allen vollen ESR
If Mid(FieldArray(0),1,3) <> "999" And doc2 Is Nothing Then ' Transaktion 999 Ignorieren, nur neue Datensätze einlesen
Call CreateDocument(db, FieldArray(0)) 'String übergeben
End If
End If
Loop
Und das Line Input außerhalb der Schleife lass mal weg.
Axel
Dankeschön, das wars! Herzlichen Dank!
Hier nochmals den ganzen Code für unsere Kollegen:
Sub Click(Source As Button)
Dim session As New notessession
Dim db As notesdatabase
Dim doc As notesdocument, profdoc As Notesdocument, doc2 As Notesdocument
Dim Dateipfad As String, aktfile As String
Dim fileNum As Integer, cells As Integer, k As Long
Dim fileName As String
Dim InputStr As String, delimiter As String
Dim FieldArray As Variant
Dim esrCheckview As NotesView
Set db = session.currentdatabase
Set profdoc = db.getprofiledocument("Einstellungen")
Set esrCheckview = db.GetView ("EsrRef") ' EsrRef View nötig um zu checken, ob der Datensatz schon importiert ist
Dateipfad = profdoc.EinstellungenEsrFile(0) ' ESR Datei
fileNum = Freefile()
delimiter = Chr(10) ' Trennzeichen
aktfile = Dateipfad
If aktfile <> "" Then
Open aktfile For Input As fileNum%
Do Until Eof(fileNum%)
' Zeile für Zeile einlesen
Line Input #1, InputStr$
FieldArray = Split(InputStr$,delimiter)
' Check ob ESR Datensatz schon eingelesen.
If Not Isempty(FieldArray) Then
Set doc2 = esrCheckview.GetDocumentByKey(fieldarray(0)) ' View mit allen vollen ESR
If Mid(FieldArray(0),1,3) <> "999" And doc2 Is Nothing Then ' Transaktion 999 Ignorieren, nur neue Datensätze einlesen
Call CreateDocument(db, FieldArray(0)) 'String übergeben
End If
End If
Loop
Else
Messagebox "Datei nicht vorhanden", 16, "Fehler"
End If
Close fileNum%
Exit Sub
End Sub