Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Alperen15 am 26.07.10 - 10:42:22

Titel: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 10:42:22
n schönen Montag euch, bräcuhte wieder mal einen tipp....

mein agent öffnet ein verzeichnis liesst die erste datei und beendet den agenten. Wie heisst der befehl lies noch die anderen Dateien in diesem Verzeichnis, falls ncoh welche vorhanden sind.
Titel: Re: nächste datei im Ordner lesen
Beitrag von: atbits am 26.07.10 - 10:54:15
Ein bisschen mehr info wäre nicht schlecht

im normalfall solltest du mit dir alle dateien im Verzeichnis bekommen

Poste doch mal den gesamten Agent Code

grüße David
Titel: Re: nächste datei im Ordner lesen
Beitrag von: ascabg am 26.07.10 - 10:58:59
Hallo,

Na genau so, wie es auch in Deinem anderen Beitrag schon beschrieben wurde.

Dir$(*.*) liest die erste Datei im Verzeichenis.
Dir$() liest die naechste Datei, die den Suchkriterien entspricht, die beim ersten Dir-Befehl verwendet wurden.

siehe auch die Designer-Hilfe zu diesem Befehl.

Andreas
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 11:02:38
also hier der erwünschte code

kurz nochmal lese erste datei ALLE ZEILEN und schreibe das als dokument in die ansicht. Anschließend nimm die Datei und stelle diese ins Verzeichnis.....


pathName$ = "E:\TestKUR\VerzeichnisTest\Vorzuege\"
   cFilename$ = Dir$(pathName$ & "*.csv", 0)
   
   filename = pathName$ + cFilename$
   
   
   Open pathName$ & cFilename$ For Input As filenum 
   Seek fileNum,1   
   On Error Goto ErrorPrint
   
   Do While Not Eof (filenum)   
      Line Input #filenum, i
      If i <> "" Then
         i = i + cTrenn
         iZaehler = iZaehler + 1                            ' *** Datensatzzähler
      Else
         Call XQSchreiben("0", "1", cgTracerVorzugImport, "asNightImport ERROR: Keine Datensätze im CSV-File", 632637&)   
         Call SendMail(doc, cSendTo, cSubject, "asImportCollect ERROR: Keine Datensätze im CSV-File")
         Goto EndeAlles
      End If
      ' **********  Einlesen des csv - Datensatzes  **************************
      cError = "asImportCollect ERROR: ReadFields" + Cstr(iZaehler)
      On Error Goto ErrorPrint
      Call ReadFields(i)                                             ' *** neuer Datensatz lesen   
      ' ************* Document Selection - Alle Documente in der DB werden nach der Auftrag/Position durchsucht - Anführungszeichen der Selection beachten !
      cSelection = "FORM = ""maNurVorzug"" & fdAuftrag = """+cImString(4)+"""  & fdAuftragsposition = """+cImString(5)+""""
      Set dc = db.Search ( cSelection , dtCutOff , 0 )      
      ' **************
      
      If cImString(1) = "A" Then
         Set doc = db.CreateDocument         
         doc.Form="maNurVorzug"
         cError = "asImportCollect ERROR: FillFields " + cImString(4) + "/" + cImString(5)
         On Error Goto ErrorPrint
         Call FillFields(doc,i,cDate)                          ' *** Schreiben komplettes Dokument            
         cError = "asImportCollect ERROR: DocSave " + cImString(4) + "/" + cImString(5)
         On Error Goto ErrorPrint
         Call doc.save(False,True)      
         
         Close filenum
         Call XQSchreiben("0", "1", cgTracerVorzugImport, "Vorzug_Export_TESTKUR" + cDate + ".csv - gelöscht ", 632637&)      
         cText = Cstr(iZaehler) + " Datensätze bearbeitet"
         Call XQSchreiben("0", "1", cgTracerVorzugImport, cText, 632637&)
         
         i = i + 1
         pathName$ = "E:\TestKUR\VerzeichnisTest\\Archiv\"
         cFilename$ = Dir$(pathName$ & "*.csv", 0)
         
         Filecopy FileName,"E:\TestKUR\VerzeichnisTest\Archiv\" + cFilename$ + ".csv"  ' *** Sichern der aktuellen File ins Archiv
         Print cText
         Kill filename                     ' *** Löschen des eingelesenen .csv Datensatzes
         
         
         Line Input #filenum, i
      End If
      
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen
Titel: Re: nächste datei im Ordner lesen
Beitrag von: ascabg am 26.07.10 - 11:06:02
Als Anregung.

cReadFile$ = Dir$(pathname$ & "*.csv")

Code
Do While sReadFile$ <> ""

.... hier Deine Aktionen

cReadFile = Dir$()

Loop

Andreas
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 11:08:45
an welche Stelle kommt der Befehl?? Anstelle Do While Not Eof (filenum)   
      Line Input #filenum, i ??
Titel: Re: nächste datei im Ordner lesen
Beitrag von: atbits am 26.07.10 - 11:10:23
Sag mal ein bisschen programmieren mußt du schon auch noch selber.

Hier helfen alle gerne, aber den eigenen Kopf anstrengen ist schon auch erlaubt ...

david
Titel: Re: nächste datei im Ordner lesen
Beitrag von: ascabg am 26.07.10 - 11:14:10
Nun doch noch einmal eine letzte kleine Hilfe.

Code
Do While sReadFile$ <> ""

  'Datei oeffnen
  ' erste Zeile lesen
  ' Deine bereits vorhandene Schleife mit EOF
  ' Datei schliessen
  ' Datei kopieren

'naechste Datei ermitteln
cReadFile = Dir$()

Loop


Andreas
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 11:16:20
es ist nich mal ein monat her dass ich damit angefangen habe trotzdem danke
Titel: Re: nächste datei im Ordner lesen
Beitrag von: atbits am 26.07.10 - 11:20:25
Ja klar, dafür schlägst Du Dich ja auch prima.

Trotzdem erzielt man (frau) die besseren und nachhaltigeren Lerneffekte, wenn man sich auch mal selbst durchbeißt und nicht alles haarklein vorkauen läßt.

Wir meinen es ja nur gut - David
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 11:46:54
letzte frage für heute.......die Datei hat fünf Datensätze in das dokument wird nur der erste, der dritte und der fünfte datensatz geschrieben.....er überspringt alle zwei wieso?

Bitte nur info ohne bemerkungen wie ....streng dich an usw.... danke

pathName$ = "E:\TestKUR\VerzeichnisTest\Vorzuege\"
   cFilename$ = Dir$(pathName$ & "*.csv", 0)
   
   filename = pathName$ + cFilename$
   i = 1
   
   Open pathName$ & cFilename$ For Input As filenum 
   Seek fileNum,1   
   On Error Goto ErrorPrint
   
   Do While Not Eof (filenum)   
      Line Input #filenum, i
      If i <> "" Then
         i = i + cTrenn
         iZaehler = iZaehler + 1                            ' *** Datensatzzähler
      Else
         Call XQSchreiben("0", "1", cgTracerVorzugImport, "asNightImport ERROR: Keine Datensätze im CSV-File", 632637&)   
         Call SendMail(doc, cSendTo, cSubject, "asImportCollect ERROR: Keine Datensätze im CSV-File")
         Goto EndeAlles
      End If
      ' **********  Einlesen des csv - Datensatzes  **************************
      cError = "asImportCollect ERROR: ReadFields" + Cstr(iZaehler)
      On Error Goto ErrorPrint
      Call ReadFields(i)                                             ' *** neuer Datensatz lesen   
      ' ************* Document Selection - Alle Documente in der DB werden nach der Auftrag/Position durchsucht - Anführungszeichen der Selection beachten !
      cSelection = "FORM = ""maNurVorzug"" & fdAuftrag = """+cImString(4)+"""  & fdAuftragsposition = """+cImString(5)+""""
      Set dc = db.Search ( cSelection , dtCutOff , 0 )      
      ' **************
' neues Dok wird angelegt falls Status aktiv ***********
      If cImString(1) = "A" Then
         Set doc = db.CreateDocument         
         doc.Form="maNurVorzug"
         cError = "asImportCollect ERROR: FillFields " + cImString(4) + "/" + cImString(5)
         On Error Goto ErrorPrint
         Call FillFields(doc,i,cDate)                          ' *** Schreiben komplettes Dokument            
         cError = "asImportCollect ERROR: DocSave " + cImString(4) + "/" + cImString(5)
         On Error Goto ErrorPrint
         Call doc.save(False,True)      
         Line Input #filenum, i
      End If
      
NextEntry:         
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen
Titel: Re: nächste datei im Ordner lesen
Beitrag von: ascabg am 26.07.10 - 11:54:23
Und auch jetzt nochmal die Frage,

Schon wirklcih die Wirkung und Anwendung von Line Input und der dazugehoerenden Parameter angesehen.

Du liest in die Variable i ein. Diese ist in Deinem Kontext aber eine numerische Variable, die ierbei nicht verwendet werden kann.


Andreas

P.S.:
Das Beispiel fuer Line Input in der Designer Hilfe ist fuer Deine Zwecke ebenfalls sehr dienlich.
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 13:35:43
ja line input hilfe habe ich mir angeschaut und auch ähnliche agente......und es bringt mich auch nicht unbedingt weiter wieso mein agent jede zweite zeile liesst.....
Titel: Re: nächste datei im Ordner lesen
Beitrag von: ascabg am 26.07.10 - 13:42:40
Grob gesagt deshalb.

Beginn Deiner Schleife zum Lesen der Werte
Zitat
  Do While Not Eof (filenum)  
      Line Input #filenum, i

und dem Ende Deiner Schleife zum Lesen
Zitat
        Call doc.save(False,True)      
         Line Input #filenum, i
      End If
      
NextEntry:        
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen


Andreas
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 13:48:45
das hab ich doch auch ich markier die Stellen mal

   Open pathName$ & cFilename$ For Input As filenum 
   Seek fileNum,1   
   On Error Goto ErrorPrint
   
   Do While Not Eof (filenum)   
      Line Input #filenum, i
      If i <> "" Then
         i = i + cTrenn
         iZaehler = iZaehler + 1                            ' *** Datensatzzähler
      Else
         Call XQSchreiben("0", "1", cgTracerVorzugImport, "asNightImport ERROR: Keine Datensätze im CSV-File", 632637&)   
         Call SendMail(doc, cSendTo, cSubject, "asImportCollect ERROR: Keine Datensätze im CSV-File")
         Goto EndeAlles
      End If
      ' **********  Einlesen des csv - Datensatzes  **************************
      cError = "asImportCollect ERROR: ReadFields" + Cstr(iZaehler)
      On Error Goto ErrorPrint
      Call ReadFields(i)                                             ' *** neuer Datensatz lesen   
      ' ************* Document Selection - Alle Documente in der DB werden nach der Auftrag/Position durchsucht - Anführungszeichen der Selection beachten !
      cSelection = "FORM = ""maNurVorzug"" & fdAuftrag = """+cImString(4)+"""  & fdAuftragsposition = """+cImString(5)+""""
      Set dc = db.Search ( cSelection , dtCutOff , 0 )      
      ' **************
' neues Dok wird angelegt falls Status aktiv ***********
      If cImString(1) = "A" Then
         Set doc = db.CreateDocument         
         doc.Form="maNurVorzug"
         cError = "asImportCollect ERROR: FillFields " + cImString(4) + "/" + cImString(5)
         On Error Goto ErrorPrint
         Call FillFields(doc,i,cDate)                          ' *** Schreiben komplettes Dokument            
         cError = "asImportCollect ERROR: DocSave " + cImString(4) + "/" + cImString(5)
         On Error Goto ErrorPrint
         Call doc.save(False,True)      
         Line Input #filenum, i

      End If
      
NextEntry:         
      Loop
Titel: Re: nächste datei im Ordner lesen
Beitrag von: ascabg am 26.07.10 - 14:04:00
Was willst Du denn mit dem Line Input am ende der Schleife erreichen?

- Zu Beginn -> lies eine Zeile ein
- bearbeite die gelesene Zeile
- steht im Array-Element cImString(1) ein "A"
- wenn Ja -> bearbeite gelesenen String vom Anfang der Schleife
- Bearbeitung fertig -> lies die naechste Zeile
- Bearbeitung der gelesenen Zeile beendet
- gehe zum Anfang der Schleife
- lies die naechste Zeile

grober Ablauf Deiner Schleife


Andreas

P.S.:
Ich wuerde das ganze Konstrukt nochmals kopmplett neu aufbauen
- Lesen und Verarbeiten mit einer Datei
- wenn das funktioniert
- um das ganze eine Schleife zum auslesen der Dateien aus dem Verzeichnis setzen
- zum Schluss das ganze mit den Logging-Mechanismen versehen

Und vor allem mit Option Declare arbeiten.
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 14:28:28
mit diesem line input am ende möchte ich dass der Agent die nächste Zeile lesen soll. bis es keine mehr gibt..... nciht mehr und nicht weniger
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 14:31:11
stop stop ich habs...... =) gott sei dank
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 16:44:34
letzte frage .... wie heisst der befehl für Lese 1.Datei im Verzeichnis danach die nächste Datei usw ...
Titel: Re: nächste datei im Ordner lesen
Beitrag von: atbits am 26.07.10 - 16:49:11
Also nachdem ich jetzt erstmal meinen Baldrian geschluckt habe und auch gar nicht weiter drauf eingehen will, dass wir dann jetzt wohl jetzt wieder beim ersten Posting angekommen sind.

Die Anwort auf Deine Frage gab es heute morgen schon ...

Als Anregung.

cReadFile$ = Dir$(pathname$ & "*.csv")

Code
Do While sReadFile$ <> ""

.... hier Deine Aktionen

cReadFile = Dir$()

Loop

Andreas
Titel: Re: nächste datei im Ordner lesen
Beitrag von: Alperen15 am 26.07.10 - 16:51:03
ich meine die nächste datei im verzeichnis nicht das nächste feld in der datei
Titel: Re: nächste datei im Ordner lesen
Beitrag von: atbits am 26.07.10 - 16:55:08
GENAU ich auch

mit dir holst Du Dir den nächsten Dateinamen.

So das war mein letzter post zu diesem Thema

Schönen Abend wünsche ich noch - David
Titel: Re: nächste datei im Ordner lesen
Beitrag von: koehlerbv am 26.07.10 - 16:55:54
Ich schliesse diesen Thread, da Antworten gar nicht gelesen, geschweige denn verstanden werden und sich daher seit Tagen (andere Threads inclusive) alles permanent im Kreis dreht.

Bernhard