Autor Thema: nächste datei im Ordner lesen  (Gelesen 5328 mal)

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
nächste datei im Ordner lesen
« 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.

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: nächste datei im Ordner lesen
« Antwort #1 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
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: nächste datei im Ordner lesen
« Antwort #2 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

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #3 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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: nächste datei im Ordner lesen
« Antwort #4 am: 26.07.10 - 11:06:02 »
Als Anregung.

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

Code
Do While sReadFile$ <> ""

.... hier Deine Aktionen

cReadFile = Dir$()

Loop

Andreas

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #5 am: 26.07.10 - 11:08:45 »
an welche Stelle kommt der Befehl?? Anstelle Do While Not Eof (filenum)   
      Line Input #filenum, i ??

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: nächste datei im Ordner lesen
« Antwort #6 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
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: nächste datei im Ordner lesen
« Antwort #7 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
« Letzte Änderung: 26.07.10 - 11:17:55 von ascabg »

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #8 am: 26.07.10 - 11:16:20 »
es ist nich mal ein monat her dass ich damit angefangen habe trotzdem danke

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: nächste datei im Ordner lesen
« Antwort #9 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
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #10 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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: nächste datei im Ordner lesen
« Antwort #11 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.
« Letzte Änderung: 26.07.10 - 11:56:19 von ascabg »

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #12 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.....

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: nächste datei im Ordner lesen
« Antwort #13 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

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #14 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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: nächste datei im Ordner lesen
« Antwort #15 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.

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #16 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

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #17 am: 26.07.10 - 14:31:11 »
stop stop ich habs...... =) gott sei dank

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: nächste datei im Ordner lesen
« Antwort #18 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 ...

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: nächste datei im Ordner lesen
« Antwort #19 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
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz