Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: geissbock am 23.03.07 - 12:31:21

Titel: Problem mit "" bei Import
Beitrag von: geissbock am 23.03.07 - 12:31:21
Hallo,
es ist mal wieder Freitag und ich seh den Wald vor Bäumen nicht und bräuchte mal wieder einen kleinen Schubser. Ich importiere einen Ascii-File der die werte mit Tabulatoren getrennt enthält. Soweit kein Problem. Jetzt sind aber manche Werte in diesem Ascii-File mit Hochkommas umgeben und manche nicht. Die Hochkommas möchte ich natürlich nicht in meinen Notesfelder drin stehen haben, sondern nur den reinen Text. Ich bring das irgendwie nicht hin.
Anbei das Script, das schon dabei aussteigt, wenn ich den Beginner auslesen will.
Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As notesDatabase
   Dim doc As NotesDocument
   Dim doc2 As NotesDocument
   Dim view As NotesView
   Dim  thr_rec(1 To 11)
   Set db = session.currentdatabase
   Set docDummy=New NotesDocument(db)
   fileNum% = Freefile()
   counter% = 0
   filename= ws.OpenFileDialog(False, "Bitte Importdatei auswählen !", "", "c:")
   If filename(0) ="" Then
      Msgbox "Dateiname nicht angeben !"
      Exit Sub
   End If
   Open filename(0) For Input As fileNum%
   Do While Not Eof(fileNum%)
      Line Input #fileNum%, txt$
      counter% = counter% + 1
   Loop
   
   Seek fileNum%, 1
   For countRec% = 1 To counter%-1
      spos=1
      epos=1
      string2 = Chr$(34)
      string1 = Chr$(9)
      i = 1
      j = 11
      Line Input #fileNum%, txt$
      epos =Instr ( spos,   txt$, string1)
      
      Do
         length = epos - spos
         thr_rec(i)=Trim(Mid (txt$, spos,length))
         beginner = Evaluate( | @Left("| + thr_rec(i) + |";1)|)

'hier versuch ich die Hochkommas anhand der Position gar nicht erst in den String zu lesen
'Aber es kommt der Fehler: Operation failed, wenn es mit einem Hochkomma beginnt.
         If beginner(0) = string2 Then
            thr_rec(i)=Trim(Mid (txt$, spos+1,length-1))
         End If
         spos = epos + 1
         epos =Instr ( spos,   txt$, string1)
         i = i+1
      Loop Until epos = 0
      Set doc = New NotesDocument(db)
      doc.Form="Videos"     
      doc.AN = thr_rec(1)
      doc.NA = thr_rec(2)      
      doc.NA1 = Strleft(doc.NA(0),",")
      doc.TI = thr_rec(3)
      doc.DA = thr_rec(4)
      doc.AB = thr_rec(5)
      doc.CL = thr_rec(6)
      doc.CO = thr_rec(7)
      doc.CH = thr_rec(8)
      doc.ME = thr_rec(9)
      doc.LE = thr_rec(10)
      doc.LI = thr_rec(11)
      
      Call doc.save(True,True)         
      
   Next
   Print countRec%
   Close fileNum%

Vielen Dank

Titel: Re: Problem mit "" bei Import
Beitrag von: bikerboy am 23.03.07 - 12:45:48
Hmmm, warum nimmst du nicht zu entfernen ein Replacesubstring ? Das könntest du doch einfach vor dem schreiben in die Felder drüber laufen lassen und schon hast du die Werte ohne Hochkomma.
Titel: Re: Problem mit "" bei Import
Beitrag von: Driri am 23.03.07 - 12:48:23
Mach doch einfach ein Replace vorher.

Titel: Re: Problem mit "" bei Import
Beitrag von: geissbock am 23.03.07 - 14:00:09
Ich sags ja der Waldd vor Bäumen. Ich hatt mich so drauf konzentriert, dass ich das über die Positionen regle, dass ich diese Möglichkeit nicht gesehen hab. Das Replace war genau das richtige. Was wär ich ohne dieses Forum. Vielen Dank und schönes Wochenende.
Gruß Klaus
Titel: Re: Problem mit "" bei Import
Beitrag von: geissbock am 26.03.07 - 09:42:59
Hallo,
ich hab doch noch mal 2 Nachfragen zum Import.
1. Die Datensätze sind in der Datei mit Zeilenumbrüchen markiert. Die einzelnen Feldinhalte mit Tabulatoren. Das Script oben importiert mir jetzt nicht den letztenFeldinhalt. Warum nicht?
2. Die Importdateien sind wohl inkonsisetent. Das heisst, manchmal kommt auch ein Zeilenumbruch mitten in einem Datensatz vor. Und teilweise dann noch eine Leerzeile. Wie fängt man denn sowas am besten ab?
Vielen Dank