Lotusscript Agent 2 Ansichten miteinander Abfragen

  • Hallo Zusammen,

    ich bin völlig neu in der IBM-Domino Welt.

    Ich hoffe Ihr könnt mir etwas helfen :thumbup:


    Ich habe für Notes 2 Ansichten mit Masken gebaut, deren Daten Sehen Wie folgt aus:

    Ansicht1:

    Besprechungsraum Zimmernummer
    ARäume E.101, O.201, D.301
    BRäume E.104, E.107, O.202, D.303, D.304
    CRäume E.105, E.106


    Ansicht2:

    Wegpunkt Raumnummer
    P12345 E.101
    P23456 O.202
    ... ...



    Folgendes möchte ich lösen:

    Zimmernummern, die mit Raumnummern übereinstimmen sollen den Wegpunkt ausgeben.

    Ich erhalte zwar Treffer, aber nur den letzten Value auch wenn mehrere enthalten sind.

    Und wie kann ich bei einem Treffer den Wegpunkt ausgeben und nicht die Raumnummer?


    Hoffentlich habe ich nicht zuviel rausgekürzt oder ist es zu umständlich



  • Du überschreibst in deiner Schleife immer wieder den ggf vorher gefunden Wert.


    Du müsstest die Zeile

    pointraueme=|TREFFER:|+raumnummer+||+Chr(13)

    folgendermaßen umschreiben:

    pointraueme=pointraeume + |TREFFER:|+raumnummer+||+Chr(13)


    Damit wären dann alle Räume mit Zeilenumbruch dort getrennt drin.


    Zur Optimierung solltest du die Zuweisung an pointsOuter noch außerhalb der Schleife verschieben

  • Super vielen Dank, manchmal sieht man den Wald vor lauter Bäumen nicht.


    Könnt ihr mir vielleicht noch sagen wenn ich ein Treffer habe, den zugehörigen Wegpunkt ausgeben kann und nicht die Raumnummer?

  • Leider komme ich nicht soweit, das Script bricht nun immer ab, die Antwortzeiten dauern zu lang.

    Ich durchlaufe für jede Zimmernummer meine While Schleife mit allen Raumnummern/Wegpunkten


    Als Beispiel: BRäume E.104, E.107, O.202, D.303, D.304


    Die Zimmernummern gehe ich mit einer ForAll Schleife durch, darin dann für jeden Wert meine While Schleife (500 Einträge)...


    Ich denke ich sollte dies wohl nicht mit einer While Schleife lösen...

    Wie würdet ihr die Zimmernummer mit den Raumnummern abgleichen? Vielleicht eher mit einer notesViewEntryCollection.Query?

  • Wo genau bricht das Script ab ?

    Was genau meinst du mit Antwortzeiten, die des Servers ?


    Du könntest auch einfach per GetDocumentByKey bzw GetEntryByKey nach deiner Raummnummer anstatt der zweiten Schleife suchen, dann müsstest du da nicht alle Dokumente durchgehen

  • Wo genau bricht das Script ab ?

    Was genau meinst du mit Antwortzeiten, die des Servers ?


    Du könntest auch einfach per GetDocumentByKey bzw GetEntryByKey nach deiner Raummnummer anstatt der zweiten Schleife suchen, dann müsstest du da nicht alle Dokumente durchgehen

    Das Script/ der Agent gibt einen XML Code auf dem Webserver aus, der bricht nun ab, da die Antwortzeiten zu hoch sind.


    Ich probiere das mit dem GetEntryByKey aus, jedoch muss ich dies dann trotzdem in der ForAll Schleife machen.


    Vielen Dank für Deine Hilfe

  • Wie wird der Agent auf dem Server gestartet ? Wie lange braucht er dann genau bevor er abbricht.


    Wenn du mehrere Ergebnisse haben kannst dann eben mit GetAllDocuments/EntriesByKey.


    Bitte da auch mal die Hilfe benutzen

  • Wie wird der Agent auf dem Server gestartet ? Wie lange braucht er dann genau bevor er abbricht.


    Wenn du mehrere Ergebnisse haben kannst dann eben mit GetAllDocuments/EntriesByKey.


    Bitte da auch mal die Hilfe benutzen

    Das Script wird im Browser über "https://server/www/db.nsf/meinAgentXML?OpenAgent" aufgerufen.

    Bisher brauchte das ganze Skript 525ms (ich musste eine Funktion und eine Schleife rausnehmen)


    Mit der Schleife brach die Seite bei 2331ms ab...

  • Du könntest auch einfach per GetDocumentByKey bzw GetEntryByKey nach deiner Raummnummer anstatt der zweiten Schleife suchen, dann müsstest du da nicht alle Dokumente durchgehen

    Vielen Dank für den Hinweis, mit GetDocumentByKey konnte ich die Abfrage schnell genug machen :)