Domino 9 und frühere Versionen > ND6: Entwicklung

Agent soll alle Dateien aus Ordner in Notes importieren

<< < (3/8) > >>

Driri:
Ich wollte eigentlich nur darauf hinaus, daß die Zuordnungen Kuddelmuddel sind. String ist schon richtig.

cFilename$ = Dir$(pathName$, 0) liefert dir ja eine Liste aller Dateien in dem Verzeichnis zurück. Wenn Du jetzt mit ForAll durch diese Liste schleifst, kannst Du dir da einiges an Zuordnungen sparen.

z.B.

ForAll filename in cFilename$
...
Verarbeitung der Datei
...
End Forall


Somit steht in filename immer ein Dateiname drin, der dann innerhalb der Schleife verarbeitet wird. Die Zuweisungen für filename und Pathfilename kannst Du dir dann sparen.

Peter Klett:

--- Zitat von: Driri am 22.07.10 - 10:43:40 ---cFilename$ = Dir$(pathName$, 0) liefert dir ja eine Liste aller Dateien in dem Verzeichnis zurück.
--- Ende Zitat ---
Hallo Ingo,

ich glaube, Du irrst Dich. in cFilename$ steht immer nur ein Dateiname, aber nicht alle

Also (nur aus der Hüfte geschossen, ohne nachzusehen)

cFilename$ = Dir$(pathName$, 0)
Do while cFilename$ <> ""
   -> Datei verarbeiten
   cFilename$ = Dir ()
Loop

Alperen15:
sollte dieses ForAll vor der Do Schleife kommen?

Do While cFilename$ <> ""
      If Isempty(cFilename$) Then      
         Exit Sub
      End If
      PathFileName = Filename usw.....

Alperen15:
ja gut so hab ich es ja wie es der Peter sagt

also ich habe etwas ordnung reingebracht.... hier noch mal der quellcode. Mir nicht übel nehmen bin neu in diesem Gebiet ;-)

Sub Initialize   
   Dim session As New  NotesSession
   Dim db As NotesDatabase   
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument   
   Dim filenum As Integer, iZaehler As Integer, pos As Integer     
   Dim filename As String, cRekNo As String, i As String
   Dim cTrenn As String, cText As String, cError As String, cSendTo As String, cSubject As String, cAusgabe As String
   Dim cSelection As String
   Dim vComplainNo As Variant
   'Dim dtCutOff As New NotesDateTime("31.12.1900")
   Dim cpathName As String
   Dim cFilename As String
   Dim Pathname As String
   Dim PathFileName As String
   Dim csvFilename As String
   REM Tracerinitialisierungsparameter
   Dim aTracerPara(1) As Variant
   
   Set db=session.CurrentDatabase   
   
   cSendTo = "helpsupport@test.com"
   cSubject = "Error asImportCollect"
   
   cgTracerVorzugImport = "asImportCollect"
   
   aTracerPara(0) = "Import WE-VorzügeTEST KUR"
   aTracerPara(1) = "PDAllgemein"
   If Not(xQAnfangID(aTracerPara)) Then
      Print "Agent:TESTKUR ImportVorzug: Konnte Tracer/Logger/Protokoll nicht initialisieren. Abbruch der Funktion."
      Exit Sub
   End If     ' If Not(xQAnfangID(aTracerPara)) Then   
   
   ' *********** Öffnen des csv Datensatzes auf dem File System
   cError = "asImportCollect ERROR: No CSV - File found"
   On Error Goto EndeFileOpen
   
   '************KUR***********
   'pathName$ = "E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"
   cFilename$ = Dir$(pathName$, 0)
   filename="E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"          ' *** Laufwerk für Zugriff von Alpha und Notes   
   iZaehler = 1
   cTrenn = ";"                                                              ' *** Definition des Trennzeichens
   filenum=Freefile()
   
   Do While cFilename$ <> ""
      If Isempty(cFilename$) Then      
         Exit Sub
      End If
      PathFileName = Filename
      
   'lese erste Zeile      
      fileNum% = Freefile()
      Open filename For Input As filenum    
      Seek fileNum,1   
      On Error Goto ErrorPrint
      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
      
      
      '******Ende Änderung KUR*****
      
      
      
      ' **********  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 )      
      ' **************
      Set doc = dc.getFirstDocument
      If Not doc Is Nothing Then                                 ' *** Dokument mit gleichem Auftrag/Position gefunden
         cError = "asNightImport ERROR: UpdateAndReplace " + cImString(4) + " / " + cImString(5)
         On Error Goto ErrorPrint
         
         Call UpdateAndReplace(doc, cDate)           ' *** Überschreiben der Kopf und ersetzen der Pos-Daten
         
         If dc.count > 1 Then
            cError = "asImportCollect ERROR: Multiple Documents " + cImString(4) + " / " + cImString(5)
            Call XQSchreiben("0", "1", cgTracerVorzugImport, cError, 632637&)      
         End If
      Else      
         ' **** kein übereinstimmen WE-Vorzug gefunden -> neues Dok wird angelegtm 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)      
         End If
      End If   ' *** Not doc Is Nothing Then   
      
'*****************************************************************************   
'*****************************************************************************   
      
NextEntry:         
      Loop '  Until Eof (filenum)   **** Neuen csv - Datensatz einlesen
' *** Schleife - lese neuen csv - Datensatz ******************************************************************************   
      Call XQSchreiben("0", "1", cgTracerVorzugImport, "Ende VorzugImport", 632637&)         
EndeGut:
      Close filenum
      'Call XQSchreiben("0", "1", cgTracerVorzugImport, "Vorzug_Export_" + cDate + ".csv - gelöscht ", 632637&)      
      cText = Cstr(iZaehler) + " Datensätze bearbeitet"
      Call XQSchreiben("0", "1", cgTracerVorzugImport, cText, 632637&)
      
      i = 1         
      pathName$ = "E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"
      cFilename$ = Dir$(pathName$, 0)
      Do While cFilename$ <> ""
         cPathname = Left(pathName$,14)      ' *** Pfadname
         csvFilename = cPathname + cFilename$
         i = i + 1
         cFilename$ = Dir$()   
      Loop                  
      Filecopy FileName,"E:\TestKUR\VerzeichnisTest\\Archiv\*.csv"  ' *** Sichern der aktuellen File ins Archiv
      Print cText
      Kill filename                     ' *** Löschen des eingelesenen .csv Datensatzes
      Goto EndeAlles
ErrorPrint:   
      Call XQSchreiben("0", "1", cgTracerVorzugImport, cError, 632637&)      
      Resume Next
      cAusgabe = cError
      Call SendMail(doc, cSendTo, cSubject, cAusgabe)
      Print cError
EndeFileOpen:
      Call XQSchreiben("0", "1", cgTracerVorzugImport, cError, 632637&)      
      Goto EndeAlles
EndeAlles:
      Call xQEnde                     ' *** Schreiben und schließen LogFile
      Exit Sub
End Sub

ascabg:

--- Code: ---filename="E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"          ' *** Laufwerk für Zugriff von Alpha und Notes   
   iZaehler = 1
   cTrenn = ";"                                                              ' *** Definition des Trennzeichens
   filenum=Freefile()
   
   Do While cFilename$ <> ""
      If Isempty(cFilename$) Then     
         Exit Sub
      End If
      PathFileName = Filename
     
   'lese erste Zeile     
      fileNum% = Freefile()
      Open filename For Input As filenum   

--- Ende Code ---

Und dennoch verstehe ich den Code nicht.

filename wird gesetzt auf "E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"
cFilename setzt Du mittels Dir$(pathname, 0)
pathname ist zu diesem Zeitpunkt allerdings leer.

Dann machst Du die Schleife solange cFilename <> "" ist.

In der Schleife setzt Du PathFileName auf FileName.
Pathfilename ist also "E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"

Diese Datei, was ja kein gueltiger Dateiname ist, versuchts Du anschliessend mit Open File ... zu oeffnen.


Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln