Werte aus einer Ansicht in LotusScript abfragen?

  • Hallo,


    ich habe eine kategorisierte versteckte Ansicht.
    Mittels einer Maske sollen nun Werte nur dann hinzugefügt werden, wenn es diesen noch nicht in der Ansicht gibt oder leer ist.


    Hier nun die Frage:
    Wie kann ich abfragen, ob der Wert schon in der Ansicht gespeichert ist?


    Grüße,
    Kathrin

  • Warum Script? Für sowas ist Formelsprache wie geschaffen. Mit Script ists inklusive Fehlerbehandlung ungleich aufwändiger und würde grad meine Kaffeepause sprengen ;=)


    Die folgende Formel gibt 1 zurück, wenn das Wort Computer in der Datenbank Inventar in deren Ansicht "Warenbestand" in Spalte 1 enthalten wäre.


    _liste := @DbColumn("";"":"INVENTAR.NSF";"Warenbestand";1);
    @If( @IsError( _liste ); @False; @IsMember("Computer"; _liste ))


    ok... hier nochmal (aber ohne fehlerroutine) mit script:


    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim vc As NotesViewEntryCollection
    Set db = session.CurrentDatabase
    Set view = db.GetView("By Category")
    Set vc = view.GetAllEntriesByKey("Suchbegriff", False)
    ....


    die trefferzahl steht jetzt in vc.count

  • Das hat super geklappt.


    Ich habe allerdings noch ein Problem:

    Code
    Set view = db.GetView("By SP")		'Switch / Patch-Felf
    Set vc = view.GetAllEntriesByKey(uidoc.FieldGetText("Switch")	, False)


    Mit vc.Count bekomme ich die Anzahl, wieviel mal der Switch in der Ansicht By SP steht.


    Wie bekomme ich es allerdings hin, die Anzahl der Kombination des Switches mit entsprechenden Patch-Feld abzufragen?
    Die Ansicht ist kategorisiert By SP, und hat 2 Spalten (Switch und Patch-Feld).

    • Offizieller Beitrag

    bau dir eine Sortierte Spalte, die sich aus Switch + Trenner + Patch-Feld zusammen baut. Dann kannst Du aus Deinem Dokument die Felder ebenfalls so zusammenbauen und in der Ansicht suchen.


    Mit

    Code
    Set doc = view. GetDocumentByKey(Key, True)
    If doc is Nothing then
    ' Eintrag nicht gefunden
    else
    ' Eintrag gefunden
    End if


    kannst Du dann prüfen, ob ein Eintrag gefunden wurde.


    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

  • So, ich hoffe, das ist jetzt die letzte Frage:


    Wenn ich einen vorhandenen Datennsatz (Journaleintrag) ändere - über Dokument bearbeiten, wie kann ich abfragen, welches Feld geändert wurde?

    • Offizieller Beitrag

    ob es ein neues Dokument ist kannst Du mit @IsNewDoc oder mit NotesDocument.IsNewNote im Script ermitteln.


    Ob ein Feld geändert wurde bekommst Du mit NotesItem.LastModified raus (funktionert nicht bei RichTextItems).


    Brauchst Du noch den geänderten Inhalt, kanst Du dir beim PostOpen ein 2D-Array füllen mit dem Feldnamen und dem Feldinhalt und dieses im QuerySave abfragen.


    Gruß
    Dirk

  • Zitat

    Brauchst Du noch den geänderten Inhalt, kanst Du dir beim PostOpen ein 2D-Array füllen mit dem Feldnamen und dem Feldinhalt und dieses im QuerySave abfragen.


    wie mache ich das?
    Wie kann ich das im QuerySave abfragen?

    • Offizieller Beitrag

    alles per Script.


    im Postopen:

    Code
    dim Array(1, AnzahlDerFelderDieDuPrüfenWillst) as StringArray(0,0) = "Feldname1"Array(1,0) = doc.FeldName1(0)Array(0,1) = "FeldName2"Array(1,1) = doc.FeldName2(0)' bei mehrfachwertefeldern baue ich mir einen String zusammen (in etwa so: Inhalt1#####Inhalt2##### ..... #####Inhaltn)


    im QuerySave muss dann nur noch verglichen und das Array neu gefüllt werden


    Tipp ich behandel alle Felder als Mehrfachwerte, ist einfacher.
    Code muss von Dir noch angepasst werden und bitte erst testen.



    Gruß
    Dirk

  • Wie kann ich den Array vom PostOpen-Script ins QueryOpen-Script übertragen?
    Was muß ich wo deklarieren bzw. füllen?


    Ich möchte den Array nur vom PostOpen ins QueryOpen übergeben...

    • Offizieller Beitrag

    sorry hatte ich vergessen:


    Dim Array ... muss in Declarations in die Globals der Maske, dann steht es Dir im PostOpen und im QuerySave zur Verfügung.


    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