Domino 9 und frühere Versionen > ND7: Entwicklung

Dialoglistenauswahl zur Laufzeit ändern

<< < (4/5) > >>

Tode:
ausser einem klitzekleinen Hinweis habe ich einen (für mich entscheidenden) Punkt bisher vermisst:

Diesen ganzen Klumpatsch- Code (um die 30 Zeilen, je nachdem wie man zählt), lässt sich durch
eine Zeile Formelsprache (2 mit Errorhandling) ersetzen, und damit muss man

a) nicht auf "SAVETODISK=FALSE" achten
b) nicht die verschiedensten Events ausprogrammieren (Postopen, Querymodechange....)
c) nicht backend- Routinen benutzen, um etwas im Frontend zu bewegen.
d) nicht darauf vertrauen, dass das Feld "Bereich" im Dokument schon gefüllt ist, wenn man das Dokument öffnet, das berechnete Feld reagiert (beinahe) automatisch auf Änderungen des Bereichs

Also:

Du erstellst eine View "PersonalLkp" (das kann man auch sein lassen und unten den DBLookup durch einen DBColumn ersetzen, dann muss man aber für jeden neu hinzugekommenen Bereich immer als Designer eingreifen und eine neue Ansicht erstellen, mit einer Kategorisierten View ist das nicht mehr nötig)

1. Spalte ist Kategorisiert, enthält das Feld Bereich
2. Spalte ist sortiert, enthält das Feld "PersNr"

Dann erstellst Du ein Feld ArrPersNr, Berechnet zur Anzeige, Versteckt, Formel:

lkp := @DBLookup( "" : "NoCache" ; "" ; "PersonalLkp" ; Bereich ; 2 );
@If( @IsError( lkp ) | lkp = "" ; "-FEHLER: Keine Personalnummern im Bereich-" ; lkp );

FERTIG !!!

Wenn man sein Handwerkszeug kennt, dann ist Notes ein rapid-development-tool, aber wenn man nicht mal absolute basics beherrscht, dann stösst man immer wieder an solche unlösbaren Probleme....

Tode
...der sich schon lange nicht mehr darüber wundert, dass es kaum noch Notes- Entwickler gibt, die das Wort "Designer-Schulung" nur aus Foren kennen...

LN4ever:
Fast könnte ich Tode als Spielverderber bezeichnen - genau das hatte ich mir aufgehoben für das Ende der gesamten Diskussion - damit die dramaturgische Fallhöhe etwas größer wird. Denn es fehlen ja noch einige Diskussionen (das ws.Prompt im Postopen ist z.B. eine Funktion, für die die Anwender den Entwickler nicht lieben werden, vor allem, wenn sie Dokumente nur lesen wollen - und genau das wäre es gewesen, was für den zweiten Fall, den man beachten muß (das QUERYMODECHANGE) noch ein wenig Kopfzerbrechen bereitet hätte).

Nun ja - ich gelte bei meinen Kolegen auch immer als der "abgedrehte Formelsprachler", aber was soll es - wenn "Viel Feind, viel Ehr' " heißt, dann bin ich manchmal an der Front eben auf der Suche nach Ehre.

A propos "dramaturgische Fallhöhe: für mich endet diese Woche jetzt gleich, weil ich heute abend bei der Premiere der Opernakademie Bad Orb in Beethovens Fidelio im Opernchor mitsinge. Seit Tagen habe ich mich schon nicht mehr rasiert, damit ich einen glaubwürdigen Gefangenen abgebe und arbeite nur noch im Homeoffice.

Hier schon mal ein Eindruck von der Generalprobe:
http://www.opernakademie.com/components/com_zoom/www/view.php?popup=1&catid=55&key=6&hit=1

Ich wünsche Allen ein schönes und erlebnisreiches Wochenende

Norbert

koehlerbv:
Nö, Tode ist kein Spielverderber - er hat vollkommen Recht (aber da sind wir uns ja einig). Zwei Nachträge noch zu Deinem Posting, Norbert:

1. QueryModeChange alleine reicht nicht, da dieses nicht ausgeführt wird, wenn ein Dokument aus einer Ansicht heraus geöffnet wird (im Bearbeiten-Modus)
2. Für heute Abend drücke ich Dir fest die Daumen - und dem ganzen Ensemble natürlich. So ein Engagement finde ich beachtenswert.

Bernhard

Demian:
Moin, moin alle zusammen,

nachdem ich weiterhin die Fehlermeldung "Array of Arrays are not supported" bekommen, wenn ich versuche das Feld im Backend  mit "set feld = doc.replaceitemvalue("ArrPersNr";arr)" zu füllen, habe ich mich für den Tipp von Tode entschieden, auch wenn mich die Spaltenformel für "Bereich" einige Nerven gekostet hat. Die Dialogfelder musste ich aber bearbeitbar lassen, weil im Exiting einige andere diverse Felder gefüllt werden.

Das ws.prompt im Lesemodus hatte ich bei einer anderen Maske schon mal und habe es im Postopen mit prüfen auf .isnewdoc behoben. Hier habe ich das Feld Bereich mit dem Vorgabewert "Gewerbliche" versehen und das Umschalten mittels ws.prompt abfrage in eine Aktion gepackt. Bin mit den vielen Befehlen in Notes noch nicht so ganz vertraut. Beschäftige mich auch "erst" seit Februar/März damit. Und wie Benhard in einem anderen Beitrag so schön geschrieben hat:
--- Zitat ---Von Office-Apps nach Notes ist ein kompletter Wechsel der Welten.
--- Ende Zitat ---

Zudem ich bisher nur über die Bücher "Anwendungsentwicklung unter LN5" und "Lotus-Script unter LN5" verfüge. 7ner kommt ja erst Ende des Jahres oder so. Weiß jemand ob ein Lotus Script für die 7ner rauskommt? Habe außer dem für LN5 im Netz keins gefunden.

@LN4ever: Wieso sollte man keine Umlaute in Modul- und Variblen verwenden? Ich fand das eigentlich ganz toll, dass es in Notes im Gegensatz zu Office geht.

@Tode:
--- Zitat ---ausser einem klitzekleinen Hinweis habe ich einen (für mich entscheidenden) Punkt bisher vermisst
--- Ende Zitat ---
. Welchen Hinweis hast du noch vermisst? Nur her damit  :)

Vielen Dank an alle die an der Lösung mitgewirkt haben. Auch wenn ich in diesem Fall dann die Formeln von Tode verwende ist es doch gut zu wissen, wie man solche Felder mit Script füllen kann. ;D

Gruß
Demian

PS: Nach wie vor geht mir das "Arrays of arrays.." nicht aus dem Kopf. Es handelt sich doch um ein eindimensionales Array.


 

Glombi:
Die Fehlermeldung mit den Arrays kommt durch die folgende Zeile:

arr(i) = doc.GetItemValue("PersNr")

Hier muss es korrekt so heisseN.

arr(i) = doc.GetItemValue("PersNr")(0)


Dann habe ich noch so ein
arr(i)= Keydoc.GetItemtext("PersNr")
gesehen. GetItemText gibts aber gar nicht als Methode für ein NotesDocument!


Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln