Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: feel_x am 28.04.03 - 11:14:14
-
Schönen Montagmorgen :)
Ich suche eine Möglichkeit, ein Feld nur ein einziges Mal zu bearbeiten und dann gegen überschreiben (durch bestimmte Personen) zu sichern.
Mein Weg ist bis jetzt
- ein bearbeitbares Feld;
- ein berechnetes Feld zur Anzeige des Wertes im bearbeitbaren Feld
- und ein Feld, das seinen Status auf "locked" stellt, wenn im bearbeitbaren Feld was drin steht.
Funktioniert; ist aber bei 150 Feldern in der Maske spaßig..
Gibt's für diese Anforderung eine einfachere Lösung?
:-\
felix s.
-
verstehe ich es richtig - hast du 3 Felder für diese Aktion ?
Tabelle mit 2 Spalten...
FeldA - bearbeitbar - verstecke das Feld wenn gefüllt
FeldAA - berechnet zur Anzeige: FeldA - verstecke das Feld wenn FeldA leer ist
im Prinzip gibt es keinen einfacheren Weg....
cu
-
im Prinzip gibt es keinen einfacheren Weg....
cu
Oki, es geht auch mit zwei Feldern, aber ich kann mit dem "Locked"- Feld einfacher programmieren als wenn ich nur zwei Felder habe und dann mit @if Feld 1 leer, dann soundso.. rumbastel.
hab schon gesehen, alle anderen machen es auch mit mehreren Feldern..
Na gut, dann halt ganz viel manuell
:)
-
du hast einen Overhead von 300% .... benötigte Felder = 50 ... tatsächliche Felder = 150 ..... mache das Leben der Kollegen nicht schwer die nach dir die db bearbeiten ;D ;D ;D
cu
-
Wie wäre es mit dem folgenden Script im Entering des jeweiligen Feldes:
'########################################
Sub Entering(Source As Field)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim strFeld As String
Dim strWert As String
Set uidoc = workspace.CurrentDocument
strFeld = uidoc.CurrentField
strWert = uidoc.FieldGetText( strFeld )
If strWert <> "" Then
Call uidoc.GotoField( "Dummy2" )
End If
End Sub
'#####################################
Wenn der User das Feld bearbeiten will, spingt der Focus sofort auf das Feld "Dummy2" . So kann der User das Feld nur einmal bearbeiten und du benötigst nicht doppelt so viele Felder ???
Dirk
-
Wenn der User das Feld bearbeiten will, spingt der Focus sofort auf das Feld "Dummy2" . So kann der User das Feld nur einmal bearbeiten und du benötigst nicht doppelt so viele Felder ???
...n'tschuldigung den Designer würde ich als einfacher user glatt erschiessen ;)
cu
-
Hehe :)
offensichtlich ist man sich einig :))
Oki, ich mach's im Mittelweg: Ich versuch mal, den Overhead der Felder zu kürzen (ich schaff's mit 2..) und baue kein skript ein, für das mich die Leude steinigen :)
Hmm.. ich brauch eh eine Lösung, bei der die Manager der DB trotzdem Felder ändern können, auch wenn sie für die normalos gesperrt sind.
Die 2-Feld-Lösung scheint mir da einfacher zu sein..
thx,
felix
-
Ich habe außderdem die Erfahrung gemacht, dass die Verwendung von vielen Entering- und Exiting-Events eine Maske ziemlich ausbremsen. Mal abgesehen von dem eigenwilligen UI, wo der Curser einfach in ein "Dummy2" springt....
-
War ja nur ein Vorschlag !!!!
Ich arbeite bei sowas ja auch mit bearbeitbaren und berechneten Feldern.
... und manche User haben es verdient sie zu ärgern ;-)
Dirk
-
... was heißt den 1 x bearbeiten - bis zum ersten Speichern des Feldinhaltes oder wirklich nur einmal einen Wert eingeben können und dann is babela...
ata
-
tja ata... einmal bearbeiten = einmal was eintragen..... laut erstem Posting "dann gegen überschreiben" .....
cu
-
Oki, ich definier das nochmal
:)
Also: Ein normaler User soll ein Feld einmal bearbeiten können und dann beim nächsten öffnen nicht mehr drankommen.
Der SuperUser allerdings soll auch nachträglich noch den Status ändern können.
Meines Achtens ist hierfür die zwei-Feld-Technik am besten,
weil man dann sowas hier per Button oder per Feld machen kann:
@If(AnmeldungBestaetigungLock="open";@SetField("AnmeldungBestaetigung";"ja");AnmeldungBestaetigung);
@SetField("AnmeldungBestaetigungLock";"locked");
und dann müsste man eine Ausnahme reintun:
if @UserName = SuperUser
dann darf der SuperUser trotzdem ändern, auch, wenn das Locked-Feld auf "locked" steht
;)
feel_x
-
... gilt das dann für alle Felder in der Maske, oder nur für bestimmte Felder?
... weil dann wäre doch ein Leser und ein Autorenfeld der richtige Weg - im Leserfeld die Rolle "[NormalerUser]" im Autorenfeld "[SuperUser]"
ata
-
... weil dann wäre doch ein Leser und ein Autorenfeld der richtige Weg - im Leserfeld die Rolle "[NormalerUser]" im Autorenfeld "[SuperUser]"
ata
gilt für die meisten Felder.. nicht alle.
und der Zugriff?
Leserfeld einmal bearbeitbar und dann nur noch lesbar und Autorenfeld immer bearbeitbar?
Danke,
felix
-
... wer nur als Leser eingetragen ist, kann nicht in den Bearbeitungsmosus...
... da du aber bestimmte Felder weiterhin bearbeitbar benötigst, ist diese Lösung nicht verwendbar...
... Wie wird dein SuperUser denn definiert - ist es der Admin - dann kannst du eine Rolle "[Admin]" verwenden. Für jedes betroffene Feld nimmst du ein Feld berechnet zur Anzeige in der Zeile darunter auf. Über die Rolle "[Admin]" kannst du dann die Felder in ihrer Bearbeitbarkeit switchen...
ata
-
Zur Vorstellung: Das ganze ist ein Workflow (immer noch meine Seminardatenbank)
Ich wickle die komplette Sache in einer Maske ab,
das heißt, die User füllen zuerst die Anmeldung aus;
dann "unterschreibt" der angegebene Vorgesetzte (bzw. Prof.),
dann nimmt der User am Seminar teil,
füllt ein Feedbackformular aus
und nach ein paar Monaten ein zweites (à la: "was ist vom Seminar hängengeblieben").
Alles in einer Maske.
Dafür will ich halt Felder haben, die für die normalen User nur einmal bearbeitbar sind, bei Fehleingaben oder Änderungen muss dann der Admin ran.
Ich denke, mit Deiner Lösung und der Rolle [Admin] ist das lösbar :)
thanx,
felix
-
... du könntest es zusätzlich noch über eine flag steuern. Wird das Dokument zum ersten mal gespeichert, dann wird über die flag und die Rolle gesteuert. Du könntest dann vom Admin die Flag zurücksetzen lassen, und der User kann selbst nochmals seine Änderungen tätigen...
ata
-
... du könntest es zusätzlich noch über eine flag steuern. Wird das Dokument zum ersten mal gespeichert, dann wird über die flag und die Rolle gesteuert. Du könntest dann vom Admin die Flag zurücksetzen lassen, und der User kann selbst nochmals seine Änderungen tätigen...
ata
Oha, das klingt ja noch besser.. :D
ich guck mal in meinen Skripten und in der Hilfe nach Flags.
Danke Dir :)
-
... eine flag ist ein Feld in deiner Maske, in der du Kontrollwerte ablegst. Du kannst die Felder (flags) frei definieren...
... den Wert des Feldes kannst du zu unterschiedlichen Events setzen. Im entscheidenden Moment fragst du deren Inhalt ab und steuerst somit deinen Code...
ata