Einstand - Agenten zum Speichern von Dokumenten

  • Hallo liebe Forenmitglieder,


    ich habe einen Agenten geschrieben der automatisch aus einer dbase DB docs in einer NotesDB aktualisiert oder neu anlegt, allerdings habe ich Probleme beim Speichern der docs.


    Ich suche nun einen Agenten der per Fromel o. Scricpt automatisch ( nach Zeitplan ) die Dokumente oder alle Dokumente der DB speichert.


    Ich möchte also im ersten Schritt docs aktualisieren und dann z.B. eine Std. später alle docs speichern.


    Hat da jemand eine Idee? :-?


    Gruss
    Martin

    • Offizieller Beitrag

    ohne Code des Agenten ist es nur ein Herumraten.


    Wenn es beim Speichern im UI funktioniert, dann werden wahrscheinlich Felder erzeugt oder Feldtypen angepasst.
    Mach noch einen ComputeWithForm vor dem Speichern des Dokumentes beim Import, eventuell hilft dies schon.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Das ist der Script des Agenten:


    Sub Initialize
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Set db = s.CurrentDatabase
    Set view = db.GetView("SYSView")

    'definiere channel and filename
    file% = 1
    filename$ = "c:\dat\1234.dbf"

    Open filename$ For Binary As #file%

    Call dbfGetHeader 'read header of dbase-file

    Call dbfGetFieldDef 'get field definitions

    'all header and fielddefinitions are set, now let's read the records !

    For i = 1 To records 'from 1 to number of records
    Print "reading record " & i & " of " & records 'kleine Info für den User
    Call dbfGetRecord 'nächster DS

    Key$ = Trim$(Str$(dbfContent(3))) 'Schlüsselfeld'
    Set doc = view.getDocumentByKey(Key$)

    If (doc Is Nothing) Then
    Set doc = db.CreateDocument
    doc.Form = "Maske"
    doc.KDNR = dbfContent(3) 'das erste Feld
    doc._Feld1 = dbfContent(1)
    doc._Feld2 = dbfContent(2)
    doc._Feld3 = dbfContent(26)
    'usw.'


    Else
    doc._Feld3 = dbfContent(14)
    'usw.'
    End If


    Call doc.Save(True, False, True)
    Next 'next i, read next record

    Close #1
    End Sub


    Etwas verkürzt dürfte aber verständlich sein.

    • Offizieller Beitrag


    füge mal den roten Code noch ein und probiere dann nochmal zu importieren. Treten Fehler auf, dann kommen diese aus der Maske.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Du hast Recht der Fehler kommt aus der Maske bzw. passiert schon beim Einlesen.


    Das Original-Script enthält natürlich wesentlich mehr Felder,
    hier ist mir wahrscheinlich schon ein Fehler unterlaufen.


    Muss mich da noch mal ransetzen.