alle Maskenfelder auf Befüllung abfragen

  • Ich habe eine Maske mit vielen Feldern, die alle ausgefüllt werden müssen.


    In der Ansicht soll ein grüner Haken angezeigt werden, wenn alles ausgefüllt ist.


    Kann man in der Maske oder in der Ansicht abfragen, ob noch leere Felder da sind? Ohne die Felder einzeln angeben zu müssen!


    Das Dokument muss übrigens nicht bei der ersten Bearbeitung komplett gefüllt werden, es darf mehrfach bearbeitet werden.


    Danke


    Lizzy

  • Per Formel müsste man alle Feldnamen in ne Liste schreiben (so oft wird sich das ja nicht ändern), per Formel könnte man alle Items im Dokument durchlaufen, und schauen, ob der Value "" ist...
    Sind jeweils nur wenige Zeilen code....


    Wenn Du keine Mehrfachwerte hast, könntest Du sowas machen:

    Code
    _allVals := @Trim( Feldname1 : Feldname2 : Feldname3 : ..... : FeldnameX );
    @if( @Elements( _allVals ) = AnzahlDeinerFelder ; "in allen Feldern steht was drin" ; "manche Felder sind leer" )


    oder eben Zahlen zurückliefern, die Du dann in der Ansicht wieder als Symbol darstellen kannst...

  • Genau die Angabe von Feldname1:Feldname2:Feldname3 ect wollte ich eigentlich vermeiden. Das wird sehr viel Tipparbeit und damit auch Tippfehler-anfällig.


    Das werden so an die 10 verschiedene Masken und in ein paar Masken komme ich voraussichtlich auf ca. 100 Felder.



    Ich hatte gehofft, es wäre möglich einfach alle in einer Maske vorhandenen Felder einzusammeln und abzufragen bzw. noch besser alle Felder deren Name mit einem bestimmten Buchstaben anfängt.


    Lizzy

  • Wie gesagt: mit Script ist das gar kein Problem, nur mit Formelsprache nicht. In Script kann man über die items- property der NotesDocument- Klasse gehen. Beispiel aus der Designer- Hilfe:

  • funktioniert jetzt genau so, wie ich das wollte


    Forall item In doc.items
    If Left(item.name,2) = "b_" Then
    fieldCount = fieldCount + 1 'vorhandene b_ Felder zählen
    If item.values(0) = "" Then 'wenn leer, wurde die Aufgabe noch nicht bearbeitet
    aufg_offen = aufg_offen +1
    Else
    aufg_erledigt = aufg_erledigt +1
    End If
    End If
    End Forall


    pro1 = aufg_erledigt/fieldCount*100
    pro2 = Format(pro1,"0.00")
    doc.anz_felder = fieldCount 'Felder im Dokument setzen
    doc.aufg_erledigt = aufg_erledigt
    doc.aufg_offen = aufg_offen
    doc.prozent = pro2




    LG Lizzy


    (ich find nicht mehr, wo ich das Thema auf erledigt setzen kann?!)

  • Das setzt aber voraus, dass Deine Items, die mit "b_" im Namen beginnen (Achtung - nächste Falle: Wenn Du mal ein Item mit LS anlegst, könnte daraus auch "B_" werden! Da also schonmal Ucase oder Lcase einsetzen!) wirklich nur Stings enthalten können. Das könnte durch eine Änderung im Designer fix obsolet machen, ein Backend-Agent sowieso.


    Du solltest das Konstrukt also nochmals überdenken und zukünftsfähig machen.


    Bernhard

  • die fraglichen Items sind lauter Dialoglisten mit vorgegebenen Werten, da kann also nichts passieren.
    Ein Agent fasst diese Items auch nicht an bzw. allenfalls zur Abfrage, aber nicht zum Ändern. Die Felder müssen von den Mitarbeitern befüllt werden.



    Aber in welche Richtung denkst Du bei zukunftsfähig? Kann mir grad nichts drunter vorstellen, was ich hier anders machen müsste.


    Lizzy

  • hi,


    Nur mal so als Beispiel.


    - Andere Entwickler, die am Design der Db (Masken) Aenderungen vornhemen sollen
    - Kannst Du sicher auschliessen, dass es niemals dazu kommen wird, dass ein Agent dazu verwendet wird, um weitere Felder zu erzeugen



    Andreas

  • andere Entwickler kann ich zumindest für die nächste Zeit ausschliessen, bin hier die einzige, die mit Notes spielen darf.


    Ein Agenten, der solche Felder erstellt, dürfte hier auch keinen Sinn machen, auch nicht in Zukunft.



    Da ich diese Funktion so benötige, werde ich die Infos dazu, und evtl. Folgen, in der Datenbank im Bereich "Hilfe für Admin/Programmierer" hinterlegen.


    Und ich gehe jetzt einfach mal davon aus, daß jemand der eine fremde Datenbank anfasst und sieht, daß so ein Bereich vorhanden ist, sich diesen auch durchliest.


    Lizzy