Document aufrufen

  • Hallo!


    Wie kann ich ein Document nach seiner ID setzen?
    Ich dachte mir das so wie bei currentdocument!


    Code
    Set uidoc = ws.??


    ??= ID



    Keine Ahnung geht das in der Richtung?




    Gruß Jan

    • Offizieller Beitrag

    set uidoc = ws.EditDocument(.., doc)


    doc muss das BackEnd_Dokument sein.


    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

  • Wenn du dir den Unterschied zwischen Frontend- und Backend-Dokument klargemacht hast (und dieser Unterschied ist elementar und auch elementar wichtig - und deine Fragestellung zeigt deutlich, daß er dir noch nicht klar ist), wirst du merken, daß im Frontend (das ist immer wenn UI in der Namensklasse vorkommt) DU das Objekt bestimmst. Im Backend gibt es die Möglichkeit, z.B. mit db.GetDocumentbyUNID ein Dokument anhand einer Eigenschaft oder eines Inhalts zu bestimmen.

  • Hmm,


    ich bastelle da jetzt schon einige Zeit dran herum und komme einfach nicht weiter! :-?


    Ich brauche einfach nur einen Code, der mir ein Document in der Currentdb nach seiner ID öffnet, da ich dann mit den Feldnamen des Documents weiter arbeiten möchte.



    Gruß Jan

    • Offizieller Beitrag

    dim ws as New notesuiworkSpace
    dim uidb as NotesuiDatabase
    dim db as NotesDatabase
    set uidb = ws.CurrentDatabase
    set db = uidb.Database


    oder


    dim ws as New notesuiworkSpace
    dim db as NotesDatabase
    set db = ws.CurrentDatabase.Database


    oder


    dim session as new NotesSession
    dim db as NotesDatabase
    set db = session.CurrentDatabase


    Gruß
    Dirk

  • ok, irgendwie bekomme ich es nicht hin, hier mal der Code:





    Hier wird halt von Notes aus eine Datenbank upgedated bzw. verändert.
    Mein Problem ist, dass sich die Felder in der 2ten while auf ein anderes document in der currentdb beziehen.
    Und auf dieses Doc versuche ich mit der id zu zugreifen.


    Schon mal vielen Dank für die bisherige Hilfe!


    Gruß Jan

    • Offizieller Beitrag

    mal eine andere Frage, warum machst Du dies im Frontend und nicht im Backend?


    Gruß
    Dirk

  • Du meinst...
    While uidoc.FieldGetText( "Server_" + Cstr( num% ) ) <> ""


    mit uidoc soll auf ein anderes Doc zugegriffen werden??

  • Hallo,


    musste so sein. ;)



    Das Problem ist halt, dass eine externe notes db upgedated wird, dies wird von einem document gesteuert und diese prozedur bezieht die daten von einem anderen document. Diese beiden Docs liegen in der CurrentDb.


    Gruß Jan

  • Hallo,


    Zitat

    Du meinst...
    While uidoc.FieldGetText( "Server_" + Cstr( num% ) ) <> ""


    mit uidoc soll auf ein anderes Doc zugegriffen werden??


    Ja genau diese Stelle meinte ich. Mit uidoc soll auf ein anderes Document über die ID zugegriffen werden.


    Ist das möglich?



    Gruß Jan

  • Hallo,


    rein theoretisch muss ich doch nur die Variable doc und uidoc auf die Currentdb setzen, oder?


    Code
    Set dbCurrent = s.currentdatabase
    Set uidoc = ws.CurrentDocument
    docID = uidoc.FieldGetText ("docID")		
    Set doc = dbCurrent.GetDocumentByID (docID)
    Set uidoc = ??


    Gruß Jan

  • Warum willst Du eigentlich mit uidoc weiter arbeiten??
    Benutz doch das Objekt Doc weiter. Also so..
    While doc.getItemValue( "Server_" + Cstr( num% ) )(0) <> ""

    • Offizieller Beitrag

    nix mit Current..., Du hast doch das doc im BackEnd. Um es in den FrontEnd (UI) zu bekommen machst Du einen NotesUIWorkSpace.EditDocument(EditMode,doc).


    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

  • In den ersten Antworten von Diali und mir kam der Kern des Problems zum Ausdruck: der Unterschied zwischen Frontend und Backend ist nicht klar. Kein Codeschnipsel der Welt wird dir weiterhelfen, solange du glaubst, mit dieser Wissenslücke und Notes-Programmierung eine dauerhafte Partnerschaft eingehen zu können.


    Natürlich können auch wir noch etwas lernen. Z.B. die Art und Weise, wie du in einer Schleife Dokumente löschst. Das hat mir schon die Socken ausgezogen.


    Set doc = view.GetFirstDocument
    While Not doc Is Nothing
    Call doc.Remove(True)
    Set doc = view.GetFirstDocument
    Wend


    Du ziehst der Schleife das Objekt unterm Hintern weg und hoffst, durch einen überirdischen Mechanismus würde der Rest schon nachrutschen und das "nächste" Dokument zum ersten Dokument.


    Daß ein Programm das Handle auf ein Objekt durch die Löschung verliert (und somit nach der vollzogenen Löschung nicht mehr auf ein "nächstes Dokument" zugreifen kann) bedeutet noch lange nicht, daß damit das nächste Dokument zum ersten Dokument wird, solange du das Referenzobjekt (die view) nicht auffrischst. Dies am Rande.


    Ich will nicht ausschließen, daß sich eine arme Seele findet, die dir dein akutes Problem jetzt und hier löst, aber du kannst sicher sein, daß du morgen wieder ein akutes Problem hast, das auf der gleichen Basis-Wissenslücke basiert. An einer Stelle beschreibst du, daß du seit einiger Zeit daran "herumbastelst". Etwas anderes als Basteln kann das auch nicht sein, solange dir die elementare Arbeitsweise unklar bleibt.

  • Hallo,


    LN4ever danke für die Belehrung! :idea:


    Zitat

    Warum willst Du eigentlich mit uidoc weiter arbeiten??
    Benutz doch das Objekt Doc weiter. Also so..
    While doc.getItemValue( "Server_" + Cstr( num% ) )(0) <> ""



    Habe es jetzt mit doc.getItemValue versucht:


    Code
    Set uidoc = ws.CurrentDocument
    	docID = uidoc.FieldGetText ("docID")
    	Set doc = dbCurrent.GetDocumentByID (docID)
    
    	num = 1
    	While doc.GetItemValue( "Server_" + Cstr( num% ) ) <> ""


    Ich bekomme aber die Fehlermeldung:
    Object variable not set!



    Gruß Jan

  • Gehen wir einmal davon aus, daß jedes Dokument ein Feld mit dem Namen "SERVER_1" hat (das prüfst du nicht weiter), dann bleibt doch aus dem vorhergehenden Posting eine minimale Winzigkeit zwischen der letzten Klammer und dem nach links zeigenden Pfeil übrig. Richtig - ich meine die geklammerte Null.
    Um die in das Script einzubringen, muß man die Vorlage nicht einmal verstehen, man muß sie nur abschreiben, aber richtig.


    *huestel - zum Zweiten.