Autor Thema: Agent soll alle Dateien aus Ordner in Notes importieren  (Gelesen 12346 mal)

Driri

  • Gast
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #20 am: 22.07.10 - 11:33:02 »
Das Forum ist nicht dafür da, dir die Arbeit abzunehmen, sondern dir Hilfe zur Selbsthilfe zu bieten.

Wenn Du den Code im Debugger laufen läßt, müßte Dir doch eigentlich auffallen, daß in dieser Zeile hier

Zitat
Open filename For Input As filenum

die Variable filename einen falschen Wert enthält. Nämlich diesen hier :
"E:\TestKUR\VerzeichnisTest\Vorzuege\*.csv"


Den korrekten Wert hat in diesem Moment doch die Variable cFilename$.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #21 am: 22.07.10 - 11:34:47 »
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 ....

Das, was Du mit dem Script machen willst, finde ich auch nichts "Wildes", nur die Art der Umsetzung.

Ich kann mir nicht vorstellen, dass das ganze ohne Fehlermeldung abläuft. Spätestens bei der mit => gekennzeichneten Zeile muss es eine Fehlermeldung geben. Die mit -> markierten Zeilen würde ich auch überdenken

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #22 am: 22.07.10 - 13:17:05 »
beim => markiertem teil kommt er nicht mal so wiet weil er dann rausspringent...d.h. er ließt sich nicht die dateien bzw die datei durch

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #23 am: 22.07.10 - 13:25:29 »
Unter der Annahme, dass filename einen vollständigen und existierenden Dateinamen incl. Pfad enthält, fliegt er dann wohl beim Seek raus, denn das passt da nicht hin und ist auch nicht notwendig.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #24 am: 22.07.10 - 13:26:15 »
Und was steht zu diesem Zeitpunkt in der Variablen filename?
Hier sollte doch der Dateiname der zu oeffnenden Datei enthalten sein.


Andreas

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #25 am: 22.07.10 - 14:25:13 »
bei fileNum% = Freefile()

steht bei
PATHNAME => E.\TestKUR\VerzeichnisTest\Vorzüge\*.csv
CFILENAME => Vorzug_Export_20080820151402.csv (Dateiname)
PATHFILENAME => "
CPATHNAME => "
CSVFILENAME => ""

vllt hilft die information ja weiter und hier nochmal der Quellcode


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 = "help@info.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 cFilename$ 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


Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #26 am: 22.07.10 - 14:30:56 »
Nur mal so auf die Schnelle, hab im moment keine Zeit mich durch den gesamten Code zu quälen.

In CFILENAME steht der nur Dateiname. Sollte da auch nicht der Pfad mit enthalten sein?

So was wie z.B.  E:\TestKUR\VerzeichnisTest\Vorzüge\Vorzug_Export_20080820151402.csv

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #27 am: 22.07.10 - 14:35:05 »
du meinst diesen Abschnitt

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()

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #28 am: 22.07.10 - 14:43:15 »
Ich habe mich auf das hier bezogen.

bei fileNum% = Freefile()

steht bei
PATHNAME => E.\TestKUR\VerzeichnisTest\Vorzüge\*.csv
CFILENAME => Vorzug_Export_20080820151402.csv (Dateiname)
PATHFILENAME => "
CPATHNAME => "
CSVFILENAME => ""


Was steht in cFilename$ in dieser Zeile Open cFilename$ For Input As filenum ?

M.E. muss auch hier Pfad und Datei enthalten sein.

Axel
   
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #29 am: 22.07.10 - 14:57:08 »
So, mein letzter Hinweis zu diesem Thema:

pathName$ = "E:\TestKUR\VerzeichnisTest\Vorzuege\"
cFilename$ = Dir$(pathName$ & "*.csv", 0)
Do While cFilename$ <> ""
   fileNum% = Freefile()
   Open pathName$ & cFilename$ For Input As filenum   
   -> Datei verarbeiten
   Close #fileNum
   cFilename$ = Dir$()
Loop

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #30 am: 22.07.10 - 15:38:13 »
dankeschön bin dank dir ein schritt weiter gekommen jetzt liesst er wenigstens meine Felder

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #31 am: 23.07.10 - 10:36:14 »
So hallo, bin ein paar schritte weiter gekommen nach langem herumprobieren und diskutieren.

Momentaner Status: Der Agent öffnet die erste csv Datei liest die erste Zeile und erstellt die erste zeile mit den Feldern als dokument in der Ansicht. Doch in die zweite zeile springt er nicht. Er erstellt die erste solange in die Ansicht solange bis ich rausgehe aus notes (endlos Schleife)

Der Agent sollte die erste Datei zeile für zeile als dokument erstellen wenn er fertig ist dann das dokument ins archiv ordner verschieben und das nächste dokument öffnet usw.... hier der teil des quellcodes

   pathName$ = "E:\TestKUR\VerzeichnisTest\Vorzuege\"
   cFilename$ = Dir$(pathName$ & "*.csv", 0)
   
   iZaehler = 1
   cTrenn = ";"                                                              ' *** Definition des Trennzeichens
   
   Do While cFilename$<> ""
      If  Isempty(cFilename$) Then
         Exit Sub
      End If     
      PathFileName = "E:\TestKUR\ VerzeichnisTest\Vorzuege \" & Filename
      
      
      i = i + cTrenn
      iZaehler = iZaehler + 1       
      'lese erste zeile
      fileNum% = Freefile()
      Open pathName$ & cFilename$ For Input As filenum   
      Seek filenum,1   
      Line Input #filenum, i
      
      If i <> "" Then
         'i = i + cTrenn
         'iZaehler = iZaehler + 1                            ' *** Datensatzzähler
         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("@IsResponseDoc", Nothing, 0)
         Set doc = db.CreateDocument
         
         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   
   Loop
   
EndeGut:
   Close filenum
   cFilename$ = Dir$()
   
   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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #32 am: 23.07.10 - 10:53:17 »
Das Script macht genau das, was Du geschrieben hast.

An welcher Stelle hast Du geschrieben, dass z.B. die zweite Zeile der Datei gelesen werden soll?

Und selbst, wenn die Datei sauber gelesen würde, käme der Agent nie an die Stelle, an der er die nächste Datei öffnet.

Do While Not Eof (filenum)

Loop

wird Dir helfen. Damit hast Du eigentlich Tipps genug, aufräumen und strukturieren solltest Du selber.

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #33 am: 23.07.10 - 11:27:12 »
gut, ich kenn GetNextDocument das bringt mich aber hier glaub nicht weiter es gibt bestimmt auch so ein ähnliches befehl für nächste zeile getnextfilenum ?! hab in der hilfe noch nichts gefunden

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #34 am: 23.07.10 - 11:30:11 »
Was macht denn Line Input #filenum, i?

Lies mal die Hilfe dazu

Offline Alperen15

  • Aktives Mitglied
  • ***
  • Beiträge: 203
  • Geschlecht: Weiblich
Re: Agent soll alle Dateien aus Ordner in Notes importieren
« Antwort #35 am: 23.07.10 - 12:10:23 »
jep funktioniert danke, allerdings sind die felder nicht richtig gefüllt. Dank dir wieder mal weiter gekommen danke

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz