title image


Smiley Ändern eines Profildokumentsfeldes
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")





Vorgabewert für das Feld das ich ändern soll:



Code:

filler:=@GetProfileField("Benutzerprofile";"Referat";@UserName);

@If(filler="";"Sie müssen ein Referat eingeben";filler)



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))



Gespeichert werden die Felder dann wie folgt:



Code:

filler:=@GetProfileField("Benutzerprofile";"Referat";@UserName);

@SetProfileField("Referatsprofil"; "Referat";Referat;filler);

@SetProfileField("Referatsprofil"; "SEM";SEM;filler);



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



...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.



Im eigentlichen Benutzerprofil aus dem das Referat gezogen wird habe ich die Referatsbezeichnung bereits ändern können.



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?

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: