eingegebenes feld beim Speichern in vorhandenen Docs vergleichen

  • Hallo,


    Ich bich leider nur Admin und kein Entwickler.
    Somit muss ich mir meine schnipsel zusammen suchen.
    Ich hoffe Ihr könnt mir helfen.
    --------
    Ich habe angefangen eine Change Datenbank für die IT Abteilung zu erstellen.


    Nun möchte ich, dass wenn jemand ein neues Dokument speichern will, das Datumsfeld an dem der Change statt finden soll, mit dem gleichen Feld der vorhandenen Dokumente verglichen wird.
    Sollte an diesem Datum bereits ein Change stattfinden, soll ein Konflikt Popup erstellt werden und das Dokument nicht gespeichert werden.


    Wie geht so etwas? Kann mir da jemand helfen?


    Ich habe bereits alles durchsucht aber nicht passendes gefunden.


    Gruß
    Thomas

  • Eine Ansicht nach diesem ChangeDatum sortiert und dann kannst du mit einem @DBLookup in dieser Ansicht nach einem bereits vorhandenen Dokument suchen und wenn du etwas findest musst du nur noch vergleichen ob du es nicht selbst bist und dann die entsprechende Meldung ausgeben

    • Offizieller Beitrag

    sauber kann es nicht gelöst werden, weil Notes/Domino ein verteiltes System ist und auch offline gearbeitet werden kann.


    Aber zur Lösung:
    - bau eine versteckte Ansicht, die nach dem Change-Datum sortiert ist.
    - beim Speichern oder in der Eingabevalidierung musst Du dann mit einem DBLookup oder im Script mit NotesView.getDocumentBYKey() abfragen, ob es schon einen Change mit diesem Datum gibt und ggf. einen Fehler ausgeben.


    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

  • Hallo taurec, diali!


    so eine Ansicht habe ichmir bereits gemacht!


    Kannst du mir sowas schreiben?
    Kenne mich mit dblookup leider nicht genug aus.


    Wäre dir wirklich dankbar!


    Gruß
    Thomas

  • Hallo,


    Ich kenne mich einfach nicht genug mit der gesammten syntax einer Formel oder Script aus.


    Leider haben wir hier in der Firma keinen Entwickler.


    Ich als Admin kann nur wenige sachen un kopiere mir nmmeistens aus bestehenden DB`s die Formeln die ich brauche.


    Habe echt leider keine Ahnung wie so etwas aussehen muss.


    Ich weiß!
    Ich sollte erst mal Entwicklung lernen. :roll:
    Aber ich bin halt Admin.


    Kannst du mich da unterstützen?


    Gruß
    Thomas

  • Und wieso kopierst du dir dann den DBLookup nicht einfach aus den Beispielen in der Designerhilfe und passt diese auf deine DB- und Ansichtsnamen an ?


    Code
    @DbLookup("Notes" : "NoCache"; "" : "NAMES"; "People"; adjName; "OfficePhoneNumber");
    • Offizieller Beitrag
    Code
    @DbLookup("Notes" : "NoCache"; "" : "names.nsf"; "People"; adjName; "OfficePhoneNumber");"" ... Servername- llerstring bedeutet Lokal"names.nsf" ... Datenbank-Datei inkl. Pfad"People" ... AnsichtsnameadjName ... hier muss der Suchschlüssel stehen. In diesem Fald wird eine Feld oder eine Variable ausgewertet"OfficePhoneNumber" ... Feld, welches zurückgegeben wird. Alternativ kann hier auch die Spaltennummer stehen


    handelt es sich um eine Suche in der gleichen DB, dann wird anstelle von
    "" : "names.nsf"
    ein leerer String verwendet, also so:

    Code
    @DbLookup("Notes" : "NoCache"; "" ; "People"; adjName; "OfficePhoneNumber");


    Gruß
    Dirk

    • Offizieller Beitrag
    Code
    wert := @DBLookup(...);
    @if(wert != ""; @Failure("Datum schon vorhaneden"); @Success)


    den DBLookup, musst Du Dir (wie oben beschrieben) noch zusammenbauen.


    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

  • Wie du der Hilfe entnehmen kannst, gibt es für DBLookup auch noch Parameter, z.B. [RETURNDOCUMENTUNIQUEID] der dir die UNIDs der Dokumente liefert.


    Wenn diese gleich der UNID deines aktuellen Dokumentes ist, dann hast du nichts gefunden.


    Lässt sich also einfach so machen:


    _RESULT ist das Ergebnis aus dem DBLookup


    Code
    @Elements(@Trim(@Replace(_RESULT;@text(@DocumentUniqueID);"")))


    Das liefert dir größer 0 zurück wenn es mindestens ein Dokument zusätzlich zu deinem aktuellen gibt.


    Und für die Ausgabe schau dir mal @Prompt an

  • Hi,


    ich habe gerade gerde mal ein wenig ausprobiert.
    erhalte aber einen Fehler insufficient Argument.


    Habe die Teile in "Input Validation" des Eingabefeldes gelegt.


    Das sind ja nun die Teile, die Ihr mir geschrieben habt.


    "TimeofChange" ist sowohl der Name des Datumsfelds vom Typ (Date/Time)
    als auch der Name der Spalte in der Ansicht.


    "View by All Planned Avctivities" ist der Name der Ansicht


    So sieht dann die Formel aus:


    Zitat

    @DbLookup("Notes" : "NoCache"; "" ; "View by All Planned Avctivities"; TimeofChange; "TimeofChange");


    @Elements(@Trim(@Replace(_RESULT;@Text(@DocumentUniqueID);"")));


    wert := @DbLookup(...);
    @If(wert != ""; @Failure("Datum schon vorhanden"); @Success)


    Da ich offentsichtlich wirklich zu blöd dafür bin ist da bestimmt was falsch oder es fehlt was.


    Habt Ihr da noch einen Tip?


    Gruß
    Thomas

  • Du solltest den Rückgabewert des DBLookups auch noch der Variablen die du dann weiterverwendest zuweisen:


    Code
    _RESULT := @DbLookup("Notes" : "NoCache"; "" ; "View by All Planned Avctivities"; TimeofChange; "TimeofChange");
    
    
    @If(@Elements(@Trim(@Replace(_RESULT;@Text(@DocumentUniqueID);""))) > 0;@Failure("Datum schon vorhanden"); @Success)


    Und vor allem dich dann für einen Vorschlag entscheiden und nicht diesen dann einfach abtippen und seltsam mischen, denn ein @DBLookup(...) kann natürlich niemals funktionieren