Domino 9 und frühere Versionen > ND6: Entwicklung

Agent soll alle Dateien aus Ordner in Notes importieren

(1/8) > >>

Alperen15:
Hallo,

Problembeschreibung: AS/400 exportiert Vorzüge (csv Datei) in ein Verzeichnis. und Notes importiert es aus dem Verzeichnis die Dateien. Ein Agenten gibt es schon. Das Problem ist, wenn der Agent mal nicht laufen sollte, werden die Dateien durch das RPG programm überschrieben. D.h. die Vorzüge gibt es dann nicht mehr im Verzeichnis.

Der Agent läuft jede Stunde. und jede Stunde exportiert es ein rpg programm ins verzeichnis für notes.

Überlegung mit Mitarbeiter ist. Dass der Dateienname neben dem datum auch die uhrzeit(hhmmss) als laufnummer mit gibt. Somit werden die Dateien nicht überschrieben es werden nur neue dateien erstellt.

das heisst mein agent muss in das verzeichnis rein unabhänging vom Datum alle lesen und importieren. Denn die importierten Dateien werden in ein archiv verschoben.


wie könnte ich das am besten lösen? vlt eine Schleife? wäre dankbar für eure vorschläge
Hier der Quellcode

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, cDate 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 lDate As Long
   Dim cpathName As String
   Dim cFilename As String
   Dim Pathname As String
   Dim csvFilename As String
   
   Set db=session.CurrentDatabase   
   Set oHeute = New NotesDateTime(Now)                     ' *** Akt. Datum   
   cDate = Cstr(oHeute.DateOnly)   
   lDate = Year(oHeute.DateOnly) * 10000 + Month(oHeute.DateOnly) * 100 + Day(oHeute.DateOnly)
   cDate = Cstr(lDate)
   iZaehler = 1
   cTrenn = ";"                                                              ' *** Definition des Trennzeichens
   filenum=Freefile()
   filename="E:\TestKUR\VerzeichnisTEST\Vorzug_Export_" + cDate + ".csv"          ' *** Laufwerk für Zugriff von Alpha und Notes   
   cSendTo = "support@hilfe.com"
   cSubject = "Error asImportCollect"
   
   REM Tracerinitialisierungsparameter
   Dim aTracerPara(1) As Variant
   
   cgTracerVorzugImport = "asImportCollect"
   
   aTracerPara(0) = "Import WE-Vorzüge"
   aTracerPara(1) = "PDAllgemein"
   If Not(xQAnfangID(aTracerPara)) Then
      Print "Agent: 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
   
   pathName$ = "E:\TestKUR\VerzeichnisTEST\Vorzug_Export_" + cDate + ".csv"
   cFilename$ = Dir$(pathName$, 0)
   If cFilename$ <> "" Then
      cPathname = Left(pathName$,22)      ' *** Pfadname
      filename = cPathname + cFilename$
   End If
   Name filename As "E:\ImportNotes\Vorzug\Vorzug_Export_" + cDate + ".csv"
   filename = "E:\ImportNotes\Vorzug\Vorzug_Export_" + cDate + ".csv"
   
   Open filename For Input As filenum    
   Seek fileNum,1   
   On Error Goto ErrorPrint
   
   Do Until 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 )      
      ' **************
      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\Archiv\Vorzug_Export_" + cDate + "*.csv"
      cFilename$ = Dir$(pathName$, 0)
      Do While cFilename$ <> ""
         cPathname = Left(pathName$,29)      ' *** Pfadname
         csvFilename = cPathname + cFilename$
         i = i + 1
         cFilename$ = Dir$()   
      Loop
      Filecopy FileName,"E:\TestKUR\VerzeichnisTEST\Archiv\Vorzug_Export_" + cDate + "_" + Cstr(i) + ".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






Driri:
Mit dem Dir-Befehl kannst Du dir eine Liste aller Dateien in dem Ordner geben lassen. Diese Liste mußt Du dann z.B. über ein Forall-Schleife durchlaufen.

Alperen15:
a ok ich versuch das im laufe des tages mal ....

ascabg:
Hallo,

Noch ein kleiner Tip.

Schau Dir in der Hilfe einmal das Beispiel zum Dir-Befehl an.
Hier wird genau das gemachtmwas Du vor hast.
(Auslesen aller Dateien in einem Verzeichnis)


Andreas

Alperen15:
aa perfekt. Dass mach dann mal sobald ich den kram vom tisch hab. Dann kann ich mich ja schon auf wochenende freuen dank euch =)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln