Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: jan2k am 29.07.11 - 11:03:24
-
Hallo alle zusammen,
ich hab ein großes Problem.
Ich habe diesen Dokumentenschutz mit eurer Hilfe realisiert.
Ein anderes Feld ist aber eine Dialogliste. Dort sind mehrere Einträge vorhanden. Unter Feldeigenschaften steht
"Vorname Nachname"
"Vorname2 Nachname2"
etc.
Habt ihr irgend einen Tipp, oder irgendwo eine Lösung, dass ich "Vorname2 Nachname2" gegen "Vorname3 Nachname3" austauschen kann?
Leider ist das total wichtig... :(
-
Unter Feldeigenschaften steht
"Vorname Nachname"
"Vorname2 Nachname2"
??? ??? ???
Oder meinst Du "auswahl" ?
-
Hallo,
Ich muss mich klauss anschliessen.
Welchen Dokumentenschutz?
Was willst Du erreichen?
Andreas
-
Ich hab einen Dokumentenschutz, der sich aus dem Feld der Dialogliste (Zuarbeit) ergibt (Berechnetes Feld, Leserfeld)
In der Dialogliste stehen also die zugriffberechtigten Personen drin.
Wenn ein alter Mitarbeiter geht und ein neuer kommt, müssen also die Namen vertauscht werden.
Das ist mein Problem, ich weiß nicht, wie ich das machen soll.
Ich habe ein anders Feld Namens "who", da ist nur eine Person drin, der Austausch geht dort.
Ich habe mal das Script angehangen, wie das gelöst wurde. (leider nicht von mir)
Was müsste man machen, dass man jetzt die entsprechende Person aus dem Feld ausliest und die gegen eine Person aus der "adminliste" austauscht?
Script Erfahrung = "0"...
Also bei dem Script würde man nur eine Person eintragen können, aber keine Person austauschen können.
admins := @DbLookup (""; @DbName; "($System)"; "System"; "adminliste");
wert := @Prompt ([OkCancelList]; "Wechsel des Bearbeiters"; "Wer übernimmt
die Aufgabe ?"; ""; @Name([CN]; admins));
@If (@IsError (wert); @Return (""); @Success);
ENVIRONMENT DocWho := wert;
@PostedCommand ([ToolsRunMacro]; "(SystemDokWhoanpassen)")
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim aendern As Variant
Dim nvParent As NotesView
aendern = session.GetEnvironmentString ("$DocWho", True)
Set db=session.currentdatabase
Set collection=db.UnprocessedDocuments
Set doc = collection.GetFirstDocument ()
Set nvParent = doc.ParentView
While Not doc Is Nothing
doc.Who = aendern
Call doc.Save (True, False)
Set doc = collection.GetNextDocument (doc)
Wend
End Sub
-
Hallole,
in deinem Script wird ein Feld mit Werten überschrieben.
Wieviel Erfahrung im Script'n hast du? Da gibt es mehrere denkbare Ansätze...
Toni
-
Ich hab leider gar keine ahung in script....
-
Dann wird es sehr schwierig, wenn nicht unmöglich.
-
@Replace tut es auch.
Bernhard
-
Also was Du da zusammenbastelst, ist m.E. wirklich gefrickelt, aber ich weiß, dass Du unter höchstem Zeitdruck ohne ausreichende Kenntnisse etwas schaffen sollst. Deshalb hier das Script in dem Stil, in dem Du arbeitest. Schön ist allerdings etwas anderes.
Du musst vorher mittels Deiner Formel den zu ändernden Wert in die Ini-Variable "$DocWhoAlt" setzen, und den neuen Wert in "$DocWhoNeu".
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim alt As String
Dim neu As String
Dim who As Variant
Dim nvParent As NotesView
alt = session.GetEnvironmentString ("$DocWhoAlt", True)
neu = session.GetEnvironmentString ("$DocWhoNeu", True)
Set db=session.currentdatabase
Set collection=db.UnprocessedDocuments
Set doc = collection.GetFirstDocument ()
Set nvParent = doc.ParentView
While Not doc Is Nothing
who = doc.Who
Forall w in who
If w = alt Then
w = neu
doc.Who = who
Call doc.Save (True, False)
Exit Forall
End If
End Forall
Set doc = collection.GetNextDocument (doc)
Wend
End Sub
Das Script ist nicht getestet, sondern direkt hier geschrieben.
Siehe diese Form der Unterstützung bitte als absolute Ausnahme an.
-
Noch ein Nachtrag: Du solltest die Ini-Variablen danach löschen. Ergänze das Script also so
alt = session.GetEnvironmentString ("$DocWhoAlt", True)
neu = session.GetEnvironmentString ("$DocWhoNeu", True)
Call session.SetEnvironmentVar ("$DocWhoAlt", "")
Call session.SetEnvironmentVar ("$DocWhoNeu", "")
-
Ich versuche es heute Abend einfach mal.
Ich muss nämlich jetzt schon die erste Variante auf einem Server aufspielen und 13 uhr ist hier schluss...
ich meld mich dann noch mal, ob es klapp