Domino 9 und frühere Versionen > ND6: Entwicklung
Editieren von Profil-Feldern
LuCypher:
Hallo
Nachdem mir hier bei mir schon alle dazu "gratulieren", dass ich die Datenbank bearbeiten darf und selber ratlos sind, hoff ich mal, dass hier jemand einen geistesblitz hat.
Ich soll in einem normalen Dokument, was aus der Navigation per Compose-Befehl aufgerufen wird,die Bezeichnung im Abteilungs-/Referatsfeld ändern.
In diesem Dokument gibt es noch zwei Felder, die vom Referatsfeld abhängen. Es soll also nur das Referatsfeld geändert werden und die anderen beiden Felder erhalten bleiben.
Aufruf des Dokuments aus der Navigation:
--- Code: ---@Command([Compose];"Referatsprofil")
--- Ende Code ---
Vorgabewert für das Feld das ich ändern soll:
--- Code: ---filler:=@GetProfileField("Benutzerprofile";"Referat";@UserName);
@If(filler="";"Sie müssen ein Referat eingeben";filler)
--- Ende Code ---
Vorgabewert für die vom Referat abhängigen Felder:
Das zweite Feld sieht ebenso aus, nur die Feldbezeichnung ist anders.
--- Code: ---filler:=@GetProfileField("Benutzerprofile";"Referat";@UserName);
@If(filler="";"Sie müssen erst ein Referat eingeben";@GetProfileField("Referatsprofil";"SEM";filler))
--- Ende Code ---
Gespeichert werden die Felder dann wie folgt:
--- Code: ---filler:=@GetProfileField("Benutzerprofile";"Referat";@UserName);
@SetProfileField("Referatsprofil"; "Referat";Referat;filler);
@SetProfileField("Referatsprofil"; "SEM";SEM;filler);
--- Ende Code ---
Mein erster Ansatz war dann das ganze wie folgt in einem Agenten zu lösen. Die Dokumentauswahl beschränkt sich dabei auf das Dokument "Referatsprofil"
--- Code: ---Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim entryName As String
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim UIdoc As NotesUIDocument
Dim itRef As NotesItem
Dim doc As NotesDocument
Dim ndc As NotesDocumentCollection
Set db = session.CurrentDatabase
Set acl = db.ACL
Set uidoc = ws.CurrentDocument
counter = 0
'Schleife zum Auslesen der ACL-Einträge ohne Gruppen und Server
Set entry = acl.GetFirstEntry
Do While Not(entry Is Nothing)
If entry.IsPerson And Not entry.IsGroup Then
entryName = entry.name
'holt das entsprechende Profildokument
Set doc =db.GetProfileDocument("Referatsprofil",entryName)
'überprüft ob das Feld "Referat" vorhanden ist
If doc.HasItem("Referat") Then
Set itRef = doc.GetFirstItem("Referat")
Select Case itRef.Text
[...]
End Select
End If
End If
Set entry = acl.GetNextEntry(entry)
Loop
--- Ende Code ---
...was wahrscheinlich nicht funktioniert hat, weil es sich ja nicht um ein Profildokument handelt.
Alternativ dazu hab ich danach versucht mir mit allDocuments die Dokumente erst in eine Collection zu landen und dann (testweise) mit getfirstDocument zumindest das erste auszulesen und ändern zu können. Beim Debugen hab ich dann gemerkt, dass bei den Items des Dokuments aber kein Item "Referat" existiert.
Letzter Ausweg wäre, die Benutzer per email zu informieren, dass die Referatsbezeichnungen angepasst wurden, aber die Werte im Referatsprofil von hand angepasst werden müssen.
Hat irgendjemand noch eine Idee oder einen Ansatz? oder hab ich nur irgendwas übersehen? oder ist es so eine ungünstige Konstellation, dass es nicht geht?
Thomas Schulte:
Wenn ich dich richtig interpretiere dann hast du zwei unterschiedliche Probleme.
Problem 1: Die Referatsbezeichnung die in Profildokumenten in der Datenbank pro Benutzer vorhanden ist muss angepasst werden.
Das können entweder die betroffenen Benutzer selber durchführen. Deine DB sollte so eine Funktion zumindest anbieten. Dann musst du nur diese Benutzer entsprechend informieren, das sie bitteschön ihr Profildokument ändern sollen. Oder du kannst dir eine Liste der Benutzer machen und den mit einem Agent und GetProfileDocCollection alle Profile holen und dann Stück für Stück durcharbeiten und das entsprechend ändern.
Problem 2: Deine Altdaten haben aufgrund derEinträge im Profildokument die falschen Werte.
Hier kannst du erst ansetzen wenn du Problem 1 gelöst hast. Dann kannst du wieder eine Profiledoccollection holen und dir dann deine zu ändernden Dokumente Stück für Stück anpassen.
klaussal:
Das Ganze hat wohl mit der ACL nix zu tun. Gib mal in der Designer-HIlfe das Stichwort "Profildokument" ein und lies ein bisschen...
LuCypher:
Problem 1 habe ich schon gelöst...
im Benutzerprofil habe ich die Referatsbezeichnungen bereits angepasst.
Wenn der Benutzer dann aber das Referatsprofil öffnet bekommt er leeres Dokument zurück in dem nur die Referatsbezeichnung drin steht, aber die Felder mit den weiteren Freigebenden Personen(Das ist das u.a. das Feld "SEM" aus dem Code) leer sind.
Zum Thema ACL:
Jein... Die Personen die in der ACL eingetragen sind, benutzen auch alle die Datenbank und haben schon ein Benutzerprofil. Und die Gruppen und Server habe ich rausgenommen.
Hinzukommt, dass es sich ja nicht um ein echte Profildokument handelt sondern nur um ein normales Dokument
koehlerbv:
--- Zitat von: LuCypher am 17.11.05 - 09:02:15 ---Ich soll in einem normalen Dokument, was aus der Navigation per Compose-Befehl aufgerufen wird,die Bezeichnung im Abteilungs-/Referatsfeld ändern.
--- Ende Zitat ---
Warum schreibst Du dann von "Profil-Feldern". was jeden ja erstmal zu ProfileDocuments führt?
Zweite Frage:
Di zitierst zahlreichen FrontEnd-Code, Deine Änderungen müssen aber im BackEnd ausgeführt werden. Deine Beispiele passen also in keiner Weise zu möglichen Lösungen. Du müsstest hier also die Informationen (ausschliesslich auf Dokument- /DB-Ebene) posten, die wirklich relevant sind.
Oder Ihr müsst einen Externen engagieren, der Ahnung davon hat.
Bernhard
PS: "LuCypher" als "Deckname" ist nicht gerade der Bringer ... Zumindest meiner Meinung nach.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln