Ls will nicht wie ich will

  • Diese Linie verursacht bei mir das das Document an dem der Agent gerade arbeitet sien Feld Form in IskljucenjeValid aendert. Und ich kriege die Nachricht Error: Entry nor found in index: (IskljucenjeValid)


    Set vsview = vsdb.GetView("IskljucenjeValid")


    Wieso passiert das?
    Danke

    • Offizieller Beitrag

    die Zeile
    Set vsview = vsdb.GetView("IskljucenjeValid")
    holt sich aus dem Objekt vsdb das Objekt "IskljucenjeValid".


    Schau mal im Debugger, ob es das Objekt vsdb gibt und ob etwas zugewiesen ist.


    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

  • Hier ein bisschen von den Code
    IskljucenjeValid ist ein view bei mir in der db.


    Dim s As New NotesSession
    Dim vsdb As NotesDatabase
    Dim vsview As NotesView
    Set vsdb = s.CurrentDatabase
    If Not vsdb.IsOpen Then
    Messagebox "Nisam uspio otvoriti bazu Vanjski suradnici",,"Greška"
    Exit Sub
    End If
    Set vsview = vsdb.GetView("IskljucenjeValid")
    If vsview Is Nothing Then
    Messagebox "Nisam uspio otvoriti pogled IskljucenjeValid",,"Greška"
    Exit Sub
    End If

    • Offizieller Beitrag

    der Code, macht der später noch etwas mit dem Dokument?


    Gruß
    Dirk

  • Ja er kreiert spaeter ein neues dok draus, aber ich hab mit Messagebox herausgefunden wo es stopppt naemlich bei


    Set vsview = vsdb.GetView("IskljucenjeValid")


    Ich kann ja den rest posten,


    Sub Initialize
    Dim s As New NotesSession
    Dim vsdb As NotesDatabase
    Dim db As New NotesDatabase("","")
    Dim vsview As NotesView
    Dim rnview As NotesView
    Dim rndoc As NotesDocument
    Dim vsdoc As NotesDocument
    Dim newdoc As NotesDocument
    Dim key As String
    Dim nadredjeni As String
    Dim mbr As String
    Dim naziv As String
    Dim placanje As String
    Dim modem As String
    Dim mrezna As String
    Dim os As String
    Dim komitent As String
    Dim brojug As String
    Dim paket As String
    Dim predmet As NotesDocument

    Set vsdb = s.CurrentDatabase
    If Not vsdb.IsOpen Then
    Messagebox "Nisam uspio otvoriti bazu Vanjski suradnici",,"Greška"
    Exit Sub
    End If

    Set vsview = vsdb.GetView("IskljucenjeValid")
    If vsview Is Nothing Then
    Messagebox "Nisam uspio otvoriti pogled IskljucenjeValid",,"Greška"
    Exit Sub
    End If
    Call db.Open("HERMES","pdm.nsf")
    If Not db.IsOpen Then
    Messagebox "Nisam uspio otvoriti bazu DocManager",,"Greška"
    Exit Sub
    End If
    Set rnview = db.GetView("ZaAgentaIsdocMan")
    If rnview Is Nothing Then
    Messagebox "Nisam uspio otvoriti pogled ZaAgentaIsdocMan",,"Greška"
    Exit Sub
    End If
    Set vsdoc = vsview.GetFirstDocument

    While Not (vsdoc Is Nothing)
    key = vsdoc.brUg(0)
    Set rndoc = rnview.GetDocumentByKey(key)
    While rndoc Is Nothing
    Call vsdoc.ReplaceItemValue("agent","1")
    Call vsdoc.ReplaceItemValue("AgSt","Nisam pronasao odgovarajući radni nalog")
    Call vsdoc.Save(True,True)
    Set vsdoc = vsview.GetNextDocument(vsdoc)
    key = vsdoc.brUg(0)
    Set rndoc = rnview.GetDocumentByKey(key)
    Wend
    Set predmet = db.GetDocumentByUNID(rndoc.FieldGetText("docProces_ID"))
    nadredjeni = rndoc.FieldGetText("docProces_ID")
    mbr = rndoc.FieldGetText("jmbg")
    naziv = rndoc.FieldGetText("organizacija")
    placanje = rndoc.FieldGetText("placanje")
    modem = rndoc.FieldGetText("modem_1")
    mrezna = rndoc.FieldGetText("mrezna")
    os = rndoc.FieldGetText("OS")
    Call rndoc.ReplaceItemValue("nalog_izvrsenje",Cstr(Cdat(Now())))
    Call rndoc.replaceitemvalue("urstatus","CLOSE")
    Call rndoc.ReplaceItemValue("nalog_zatvaranje",Cstr(Cdat(Now())))
    Call rndoc.Save(True,True)

    If rndoc.Document.HasItem("komitent") = False Then
    komitent = rndoc.FieldGetText("jmbg")
    Else
    komitent = rndoc.FieldGetText("komitent")
    End If

    brojug = rndoc.FieldGetText("ug_broj")
    If rndoc.FieldGetText("paket_novi") <> "" Then
    paket = rndoc.document.paket_novi(0)
    Else
    paket = rndoc.document.paket(0)
    End If


    'kreiranje novog radnog naloga
    Set newdoc = db.CreateDocument()
    newdoc.form = "RadniNalogWIC"

    'upisivanje podataka u novi nalog
    newdoc.doc_predmet = rndoc.doc_predmet
    newdoc.doc_proces = rndoc.doc_proces
    newdoc.docProces_ID = rndoc.docProces_ID
    newdoc.komitent = komitent
    newdoc.proces =rndoc.proces
    newdoc.proces_tip = rndoc.proces_tip
    newdoc.doc_tip = Cstr("Radni Nalog")
    newdoc.doc_br_predmet = rndoc.doc_br_predmet
    newdoc.doc_izradio = Cstr(user)
    newdoc.doc_DefRead = Cstr(user)
    newdoc.doc_DefEdit = Cstr(user)
    newdoc.doc_user = Cstr(user)
    newdoc.modem = modem
    newdoc.mrezna = mrezna
    newdoc.OS = OS
    newdoc.doc_nositelj = "miljenko buhac"
    newdoc.ug_broj = brojug
    newdoc.paket= paket
    newdoc.jmbg = mbr
    newdoc.placanje = rndoc.placanje
    newdoc.nalog_izvrsenje = Cstr(Cdat(Now()))
    newdoc.VrstaDokumenta = Cstr("Isključenje sa mreže")
    Call newdoc.MakeResponse(predmet)
    Call newdoc.Save(True,True)
    Call vsdoc.ReplaceItemValue("agent","1")
    Call vsdoc.Save(True,True)
    Set vsdoc = vsview.GetNextDocument(vsdoc)
    Wend



    End Sub

    • Offizieller Beitrag

    bei neuen Dokumenten (newdoc) setzt Du das Feld Form nicht!


    Schalte mal den Debugger ein und gehe das Script Zeilenweise durch, beobachte dabei das Item "Form" im Dokument und merke Dir die Zeile, bei der sich der Inhalt des Feldes Form ändert.


    Verwendest Du in einer Ansicht eventuell eine Maskenformel?


    Gruß
    Dirk

  • Der Debugger sagt es passiert hier:


    Set vsdoc = vsview.GetNextDocument(vsdoc)


    kann es sein das es deswegen passiert weil ich die key Variable absichtlich nicht initialisiert hab weill ich nicht wollte das er irgendwas verandert in der anderen Db bis ich ein paar Test Docs mache. Vieleicht wuerde er normal laufen wenn es key gibt.


    key = vsdoc.brUg(0)
    Set rndoc = rnview.GetDocumentByKey(key)

    • Offizieller Beitrag

    mit
    Set vsdoc = vsview.GetNextDocument(vsdoc)
    gehst Du in der Ansicht nur ein Dokument weiter (von dem aktuellen Dokument ausgehend).


    Wenn sich nach dieser Zeile die Form im vsdoc ändert, dann hat dieses Dokument schon vorher die Form eingetragen.


    Mach mal eine Kopie der Ansicht, füge links eine Spalte ein (Formel: Form) und kategorisiere diese. Gibt es ein Dokument mit dem putzigen Masken (Form) Name?


    Gruß
    Dirk

  • Hm ich habe folgenden Formen Main, Iskljucenje und die meisten sind Not categorized bzw. kein eintrag in From Feld. Wie kann das vorkommen es sind neue docs kreirt mit der Form Main per Web-Browser?


    Danke

    • Offizieller Beitrag

    Dein Agent erzeugt neue Dokumente ohne ein Feld Form zu erzeugen und einen Maskennamen einzutragen. Eventuell gibt es noch mehr solcher Agenten.


    Gruß
    Dirk

  • Ich glaube ich weiss was das Problem sein koente fuer die Docs ohne Eintraege ins Form Feld. Die werden per Browser gemacht, aber ich mache nur save im Agenten der mit ToolRunMacro auf einen Button aufgerufen wird. Vieleicht sollte ich noch dranhaengen FileSave? Liege ich da im Recht mit der Vermutung?


    Danke

    • Offizieller Beitrag

    Im Browser öffnest Du doch die Maske, wird diese dann gespeichert, wird auch das Feld Form erzeugt.


    Oder erzeugt der Agent das Dokument?, dann musst Du in dem Agenten auch das Feld Form setzen.


    Hat ein Document kein Form-Feld wird die Vorgabe-Maske (Eigenschaft der Maske, die mit dem blauen Pfeil in der Übersicht) benutzt. Alternativ kannst Du dies auch in allen Ansicht über eine MaskenFormel abfangen.
    @If(Form = ""; "Maske XYZ"; Form)


    Gruß
    Dirk

  • Diali


    Ja dass weiss ich, ich oefnne die Maske im Browser und auf der Maske sind zwei Buttons die beatetigen beide Agenten die dan veraenderungen an anderen Dokumenten machen(das klappt alles gut) und ein Feld auf dem Dok veraendern damit ich spaeter weiss welches Button bzw. Agent betaetigt wuerde. Ich rufe sie mit ToolsRunMacro auf und mache doc.Save(True,True) wenn die anderungen am Dok vorbei sind. Es kommen keine Fehler Meldungen waehrend der Proces lauft.


    Dann sollte das Dokument halt mit der maske mit der es erschaffen wuerde auch speichern. Aber das geschiet nicht!


    Danke dir fure deine Zeit!

    • Offizieller Beitrag

    dann speicher im Agenten die Form gleich mit
    doc.From = "Maske XYZ"
    doc.Save True, true


    Gruß
    Dirk

  • Hey


    wenn ich das jetzt richtig verstanden habe dann hats du nur probleme mit den Dokumenten die du aus dem Web abspeichern willst ?


    willst du das zur zeit im web geöffnete Dokument abspeichern so
    solltest über


    Set doc = Session.DocumentContext


    gehen.
    Dann wird die Maske mitgespeichert.


    wenn ich das Problem jetzt so richtig verstnden hab.

  • maestro :


    Ja das habe ich auch so gemacht per SessionDocumentContext, es sollte eigentlich gehen. Jetzt habe ich es so gemacht wie von Diali empfohlen und es geht!


    Diali:


    Ich haetet auch selber drauf kommen koennen das From Feld manuel zu aendern, aber es sollte auch so wie am Anfang von mir gemacht gehen.


    Zum anfangs Problem,


    Nachricht Error: Entry nor found in index: (IskljucenjeValid)


    Ich glaube das kommt vor wenn keine Docs mehr im View sind vo der Agent nachschaut naemlich View IskljucenjeValid.
    Beim Runtime im Agent Properties habe ich:
    on event
    action menu selection
    all docs in database


    aber er lauft on event nur so lang ich ihn teste spaeter soll er scheduled sein dan habe ich nur
    all new % modified docs
    all docs in dataabase


    Was soll ich jetzt waehrend ich teste und was spaeter waehlen?


    Danke

    • Offizieller Beitrag
    Zitat

    Was soll ich jetzt waehrend ich teste und was spaeter waehlen?


    Kommt darauf an, welche Dokumente Du bearbeiten willst.


    Bau Dir eine Fehlerbehandlung ein (on error). bzw. kannst Du auch prüfen, ob ein Dokument zurück kommt.
    If doc is Nothing Then


    Gruß
    Dirk

  • HI


    jetzt sieht es so aus ich habe nach jedem Set einen if doc is nothing eingebaut. Der Agent lauft gut bis er ein Dokument processiert hat danacht kommt dieFehler Nachricht!



    Hier bricht es ab


    Set vsdoc = vsview.GetFirstDocument
    While Not (vsdoc Is Nothing)


    ......
    ......


    Call vsdoc.ReplaceItemValue("agent","1")
    Call vsdoc.Save(True,True)
    Set vsdoc = vsview.GetNextDocument(vsdoc)
    'Genau hier
    Wend


    P.S. Heute spielt De gegene Kroatien Davis Cup ! Moege das bessere Team gewinnen

    • Offizieller Beitrag

    wird das Dokument vsdoc, nach dem Ändern der Felder eventuell nicht mehr in der Ansicht "IskljucenjeValid" angezeigt?, dann musst Du vorher Dir das nächste Dokument holen, in etwa so:


    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