Domino 9 und frühere Versionen > ND6: Entwicklung

Feldwert per Schaltfläche ändern (Dok. im Lesemodus)

<< < (3/4) > >>

Durri:
Hallo Berndt, ich nochmal,

hoffe, Du hattest gestern einen schönen Feierabend  ;D

Das mit dem Refresh klappt nicht - macht aber nix.
Aber nochmal zurück zum Setzen des Usernamens. Mit Deinem Befehl wird der Name im CANONICALIZE-Format gesetzt. Kann ich den Namen auch im ABBREVIATE-Format setzen?
Wenn das noch klappen würde, wäre die Schaltfläche so, wie ich sie haben wollte.

Danke und bis morgen
Michael

>>> hab jetzt auch genug für heut und mach Schluss   ;)

TMC:
Grundsätzlich würde ich den Aufbau der Applikation überdenken und mit Autorenfeldern arbeiten, das ist sicherer als das ganze über Maskenevents zu steuern.

Wie auch immer:

Refresh:
Wenn das Dokument geöffnet ist, und Du dort was per LotusScript änderst, ist ein

--- Code: ---Call uiws.ViewRefresh

--- Ende Code ---
erforderlich, damit Du die Änderung sofort in der Ansicht siehst.

Wegen dem Usernamen-Format:
Für Usernamen solltest Du IMMER Namensfelder verwenden. Zur Anzeige in Ansichtsspalten nimmst Du dann statt

--- Code: ---Username

--- Ende Code ---
ganz einfach

--- Code: ---@Name([Abbreviate]; Username)

--- Ende Code ---

Wenn Du unbedingt darauf bestehst, kein Namensfeld sondern ein Textfeld zu verwenden, und dort den Abbreviate-Namen reinzusetzen, dann kannst Du Dir das via

--- Code: ---Dim nn As NotesName
Set nn = New NotesName (session.Username)
strErgebnis = nn.Abbreviated
--- Ende Code ---
umwandeln. Ich rate aber davon ab, und empfehle Dir, immer mit Namensfeldern zu arbeiten und den canonical Namen zu verwenden.
Siehe auch: http://atnotes.de/index.php?topic=14119.0

flaite:
Du solltest wirklich erst einmal nachschauen, warum das Dokument nicht in den Editiermodus wechselt. Das scheint eine vorhandene Anwendung zu sein.
Ich empfehle *dringend* die Teile wirklich zu verstehen, wofür du deine Erweiterungen schreibst (sprech da aus Erfahrung).
Vermutlich ist code im qerymodechange der Maske (schau da mal nach).
Stell Fragen, wenn du es nicht verstehst.
Vor allem kannst du dabei selber was lernen.
Mach ne Sicherheitskopie von der Maske (oder besser von der ganzen Datenbank) und spiel mit dem Code rum.
Jedenfalls führt dieses Ranpflantschen oft zu ziemlich bizarren Datenbanken (meiner Meinung nach).

Gruß Axel

TMC:
Axel,

--- Zitat von: kennwort am 03.11.05 - 22:28:29 ---Du solltest wirklich erst einmal nachschauen, warum das Dokument nicht in den Editiermodus wechselt.
(...)
Vermutlich ist code im qerymodechange der Maske (schau da mal nach).
--- Ende Zitat ---
das wurde in Antwort #3 bzw. #4 schon behandelt.
Ansonsten stimme ich Dir aber zu, daher auch mein skeptischer Einwand, den Aufbau zu Überdenken (Autorenfelder). Denn so per LS oder auch Formelsprache setzt man (und auch ggf. ein experimentierfreudiger User) die ganzen Events außer Kraft.

koehlerbv:
Drei Anmerkungen:
Natürlich bekommst Du eine Sicherheit wegen der Bearbeitbarkeit nur via Autorenfelder - dies wurde ja schon erwähnt. Wenn Du derzeit nur eine Sperre im QueryModeChange eingebaut hast, ist dies ja zudem noch ganz simpel zu umgehen: Drücke Strg-B (deutscher Client, im englischen Ctrl-E) aus einer Ansicht heraus, und QueryModeChange wird überhaupt nicht getriggert.

Prinzipiell: Was das Ändern von Items im Backend angeht, wurde der passende Code ja schon gepostet. Und genauso, wie das Item "Status" geändert wird, können auch die beiden anderen Items auf neue Werte gesetzt werden.

Last but not least: Du setzt LS ein, um "das Bearbeiten zu verhindern" (QueryModeChange), sagst aber , dass Du da nicht fit bist. Du begibst Dich damit auf extrem dünnes Eis (siehe das vergessene Event PostOpen, ggf. auch PostRecalc).

Matthias "TMC" schrieb es schon: Das Verändern von Dokumenten kannst Du durch pures Reagieren auf FrontEnd-Aktionen nie und nimmer verhindern, und Notes stellt deshalb ja auch ganz andere Möglichkeiten zur Verfügung. genauso, wie wir es hier beispielhaft beschrieben haben, kann sich jeder halbwegs begabte User selber einen Agent schreiben und Items verändern, wie es ihm gerade beliebt.

Was Namensfelder angeht: Das kann man machen, muss man aber nicht, denn Namensfelder unterscheiden sich von normalen Textfeldern nur durch zwei wesentliche Eigenschaften:
Canonical names werden im FrontEnd abbreviated angezeigt (also aus "CN=Hein Bloed/O=Kutter/C=Meer" wird eben "Hein Bloed/Kutter/Meer".
Und - zumindest ab R6 - können Namensfelder via den Administrationsserver in den Administrationsprozess einbezogen werden (Löschungen von Usern, Umbenennungen, Rezertifizierungen). Letzteres kann sehr erwünscht sein, aber auch zutiefst kontraproduktiv (Beispiel: Alle Anträge gelöschter Mitarbeiter weisen im Namensfeld "Antragsteller" plötzlich nur noch Leerstrings auf).
Der Einsatz von Namensfeldern versus Textfeldern will also sehr wohl durchdacht sein.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln