Autor Thema: Erste Zeile einer Textdatei wird nicht eingelesen  (Gelesen 4049 mal)

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
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

Code
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
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Erste Zeile einer Textdatei wird nicht eingelesen
« Antwort #1 am: 24.10.08 - 10:02:08 »
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.

Code
		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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
Re: Erste Zeile einer Textdatei wird nicht eingelesen
« Antwort #2 am: 24.10.08 - 10:51:39 »
Danke, die erste Zeile wird nun übernommen. Leider wird die letzte Zeile nun nicht übernommen. Wenn ich am Ende des Files eine leere Zeile hinzufüge geht es. Die letzte Zeile scheint ausgelassen zu werdem. Einen Tipp?
Ich habe es bereits ohne Split mit dem Chr(10) versucht, also mit einem Normalen String anstatt Array, um zu testen ob eventuell in der letzen Zeile kein Chr(10) zehn mehr drin ist. Doch dies scheint nicht das Problem zu sein.

Danke für eure Hilfe.
Gruss
Manuel
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Erste Zeile einer Textdatei wird nicht eingelesen
« Antwort #3 am: 24.10.08 - 12:16:23 »
Versuch's mal so:

Code
...
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
Re: Erste Zeile einer Textdatei wird nicht eingelesen
« Antwort #4 am: 24.10.08 - 13:39:53 »
Hallo Axel

Mit deiner neuen Version wurde die letzte Zeile nun eingelesen, jedoch die erste wieder nicht mehr  ???

Sonst noch ein Tipp?

Grüsse
Manuel
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Erste Zeile einer Textdatei wird nicht eingelesen
« Antwort #5 am: 24.10.08 - 14:19:04 »
Hast du das Line Input vor der Schleife gelöscht? Poste doch nochmal den gesamten Code wie er jetzt aussieht.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline immanuel

  • Senior Mitglied
  • ****
  • Beiträge: 461
  • Geschlecht: Männlich
    • Freshpixel Fotostudio
Re: Erste Zeile einer Textdatei wird nicht eingelesen
« Antwort #6 am: 24.10.08 - 16:20:12 »
Dankeschön, das wars! Herzlichen Dank!

Hier nochmals den ganzen Code für unsere Kollegen:

Code
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
IBM Certified System Administrator - Lotus Notes and Domino 6/6.5

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz