document finden

  • hallo,


    ich würde gerne aus einem datensatz auf einen anderen zugreifen und dort ein feld setzten.
    und diesen zweiten datensatz müsste ich anhand eines feldes finden geht sowas

  • entweder über einen beliebigen feldinhalt
    -> set doc = view.GetDocumentByKey(key, True)


    oder z. b. über die uniqueid des 'zieldokumentes'
    -> set doc = db.GetDocumentbyUNID


    bei formelsprache würde ich es vielleicht über die kombination
    -> @DbLookup, @Command([FileOpenDatabase]; parameter ...), @Command([EditDocument])
    probieren ...

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • key ist der wert nach dem du suchen willst, also der z. b. der inhalt eines feldes.
    -> set doc = view.GetDocumentByKey("wert der gesucht werden soll", True)
    diesen kannst du fest eintragen (was wahrscheinlich wenig sinn macht) oder z. b. aus dem aktuellen dokument auslesen.


    die unid ist die documentuniqueid die jedes dokument hat.

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • Dabei ist aber eines noch hinzu zufügen, die Ansicht, in der gesucht werden soll, muss in der ersten Spalte kategorisiert oder sortiert sein. Sonst funktioniert GetDocoumentByKey nicht.


    Unabhängig davon gibt es noch eine Möglichkeit Dokumente zu finden. In der NotesDatabase-Klasse gibt es die Methode Search
    Die liefert alle gefundenen Dokumente in einer collection. DAzu braucht man keine entsprechend sortierte Ansicht.


    Beisp.:


    Set collection = db.Search({Status = "Aktiv"}, Nothing, 0)


    Liefert alle Dokumente in der Datenbank, die den Status Aktiv haben.



    Axel

  • Danke erstmal für eure supper hilfe hier bei allen fragen!!


    Aber ich würde gerne nach einer Seriennumer suchen. Und ich denke mal das währe nur ein Document (sollte es zumindest sein)


    desswegen denke mal diese getdocumentbykey währe schon das richtige ich bekomm das mit dieser funktion nur leider nicht gebackern kann mir mal wer helfen. Bekomm permanent irgentwelche Fehler vonwegen kein object etc wieder.


    danke schonmal

  • getdocumentbykey findet aber nur ein Dokument in der Ansicht wenn der key sich in der ersten sortierten Spalte in der Ansicht befindet. Wenn das der Fall ist, kannste das nehmen.
    Fuer die Fehlersuche - von wegen "kein object etc." - hilft im allgemeinen der Debugger hervorragend. Da kannste Dir anzeigen lassen, warum ein Objekt nicht gesetzt wurde bzw. was es sein koennte.
    Ansonsten musste den Code mal posten.

  • Dim ws As New notesuiworkspace
    Dim uidoc As notesuidocument
    Dim this_doc As notesdocument
    Dim view As NotesView
    Dim db As notesdatabase
    Dim s As New notessession
    Dim searchdoc As NotesDocument
    Dim viewName As String
    Dim searchSN As String


    viewName = "Keyword_Scanner"
    Set uidoc = ws.currentdocument
    Set db = s.currentdatabase
    Set view = db.getview(viewName)
    Set searchdoc=view.GetDocumentbykey("9995002",True)




    Das mit der ersten spalte habe ich gerade mal geändert und soweit bin ich auch schon gekommen jetzt meine frage wie ich an das Feld in dem gefundenen Document rannkomme.


    BZW wie ich erst mal überhaupt prüfen kan ob er ein document gefunden hat.

  • Naja mit


    dim feldwert as variant


    if not searchdoc is nothing then


    Feldwert = searchdoc.getitemvalue("MeinFeld")


    end if


    Feldwert enthält nun einen Array. Mit Feldwert(0) kommst du an den 1. Wert, Feldwert(1) den 2. Wert etc...

  • Er scheint bei mir das searchdoc nicht zu finden zumindest wird im debugger kein eintrag gemacht und in dieIf rennt er auch nicht
    Daraufhin habe ich nocheinmal geprüft in der View ist die erste spalte der eintrag mit den Seriennummern und die gesuchte ist auch vorhanden

  • Dim ws As New notesuiworkspace
    Dim uidoc As notesuidocument
    Dim this_doc As notesdocument
    Dim view As NotesView
    Dim db As notesdatabase
    Dim s As New notessession
    Dim searchdoc As NotesDocument
    Dim viewName As String
    Dim searchSN As String
    Dim ausgabe As String
    Dim feldwert As Variant

    viewName = "Keyword_Scanner"
    Set uidoc = ws.currentdocument
    Set db = s.currentdatabase
    Set view = db.getview(viewName)
    Set searchdoc=view.GetDocumentbykey("2")


    If Not searchdoc Is Nothing Then

    Feldwert = searchdoc.getitemvalue("MeinFeld")

    End If




    das feld wonach ich suche ist ein textfeld
    allerdings was mit bauchweh macht das er scheinbar kein document findet. ich seh im debugger zum mindest keinen wert bei der variabele

  • dim variable1 as variant
    Variable1 = searchdoc.getitemvalue("Feldname")
    ..damit haste alle Werte ausgelesen oder nur einen...
    Variable1 = searchdoc.getitemvalue("Feldname")(0)


    Woran lag es denn nun??