Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: erfurter am 22.08.06 - 16:12:14
-
Hallo zusammen.
habe hier im Forum einige interessante Sachen gefunden. Aber jetzt habe ich ein kleines Problem.
Aber erstmal von vorne.
gespeicherte Dokumente schütze ich vor änderungen durch scripte im postopen und querymodechange. hab hier im formum gelesen, dass ich eine änderung jedoch über eine variable zulassen kann.
habe folgendes gemacht:
in Maske / Declarations habe ich das "dim änderungsflag as string" definiert.
im script der maske setzte ich dann die variable auf "1" und prüfe diese variable auch im querymodechange ab. blos, wenn das script aus dem button ins querymodechange wechselt, ist die variable wieder leer, und die bearbeitung wird abgelehnt.
kennt hier jemand eine lösung (hab hier schon einiges gelesen, deshalb denke ich dass kann mehr als die hälfte ;D )
VIELEN DANK!!!
-
dim änderungsflag as string
gehört unter (Globals) - Declarations und nicht unter den Declarations der Maske.
Der Button kennt nur global deklarierte Variablen, nicht die unter der Maske.
Andreas
-
super, klappt einwandfrei.
ps: finde dieses forum klasse. bin was script angeht anfänger und hab mir diese art der programmierung über bestehende datenbanken und euch angeeignet.
also nochmal, vielen dank an alle und v.a. glombi
-
Kleiner aber wichtiger Tip: verwende grundsätzlich
Option Declare
unter den Options - in (Globals), der Maske, den Buttons etc.
Damit erspart man sich eine Menge Fehler, auch was den Scope von Variablen betrifft.
Andreas
-
ok, werd ich machen.
aber was bedeutet bzw. bewirkt das?!?
hab das schon öfters gelesen
-
Warum machst Du nicht einfach ein Feld "SaveOptions" mit Default = "0" in die Maske. Im Speichern - Button kannst Du dann einfach temporär SaveOptions auf 1 setzen und somit kann man das Dokument erst dann speichern!
Grüsse, Klaus
-
hab von meinem abteilungsleiter die aufforderung bekommen, dass wenn eine änderung an einem gespeicherten doc vorgenommen wird, ein kommentar erfasst werden muss.
das - so hab ich mir das gedacht - lös ich über eine inputbox, welche dann den username, das datum und den kommentar in einem berechneten feld dokumentiert.
-
Ohne Option Declare kannst Du undeklarierte Variablen benutzen.
Dann sagst Du z.B. einfach
Set word = dc.GetFirsDocument
if word = "Test" then...
Sowas kann mit Option Declare nicht passieren, da
1. die Variable deklariert sein muss
2. Wenn sie dann z.B. als String deklariert ist kannst Du deinen Code nicht ohne Fehldermeldung speichern. ( Ich glaub dann kommt Type Mismatch oder so... )
Gerne kommen dann so Sachen wie 'Object Variable Not Set' und so ein Zeug.
Nimm mal Spasseshalber ein Script, natürlich eins das Du gefahrlos Zerstören kannst, entferne Option Declare und ein paar Dims. Und schau was passiert. Es kann gut gehen muss aber nicht
Und was auch immer wieder gerne gesagt wird: Errorhandle einbauen!
Nimm die Mühe in kauf es immer einzubauen. Es erspart Dir später eine Menge Arbeit.
So, nu hoffe ich daß ich das Richtig wiedergegeben habe.
André