Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jack am 15.03.05 - 16:03:27
-
Hallo Leute,
:(
Kann mir jemand helfen, warum der agent nicht tut, was er tun soll.
Er soll in der DB aus dem Namensfeld “Mailadress“, in dem der User die gewüschte Weiterleitungsadresse einträgt, den Wert holen und im domino verzeichnis nach dem User suchen, der sich angemeldet hat und in seinem personen dokument in das Feld „Mailadress“
diese Adresse eintragen. Hat jemand vielleicht eine Idee??
Danke für die Hilfe
Gruß Jack
Sub Initialize
' code by Bob Pratico of K2ITS
' version 2.6 (02/11/02)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim j As Integer
Dim str_array As Variant
Dim ChosenUsername As String
Dim Mailadress As String
Dim num_docs As Integer
Dim dateTime As New NotesDateTime("1/1/97")
Dim aLog As New NotesLog("Agent log")
Call aLog.OpenAgentLog
On Error Goto ErrorHandler
Set doc = session.DocumentContext
Set db = session.CurrentDatabase
Call aLog.LogAction("Agent executing by " & doc.NotesUserNameDisplayed(0))
Dim NamesDb As New NotesDatabase("", "NAMES.nsf")
Dim FoundList As NotesDocumentCollection
Dim NameDoc
Dim eval As Variant
str_array = doc.GetItemValue("NotesUserName")
ChosenUsername = str_array(0)
str_array = doc.GetItemValue("Mailadress")
Mailadress = str_array(0)
' Search all the NABs on this server for a
' document that contains the ChosenUsername in
' the FullName field. Then you need to set the
' HTTPassword field in this document to the
' ChosenPassword value. Finally save this document
' in the Name and Address Book. At this time you can
' also delete the document in the SetPassword database
' that triggered this change. Otherwise every time the
' agent ran, it would just set the password over and over again.
' Set FoundList = NamesDb.Search("ShortName = """ + ChosenUsername + """", dateTime, 0)
Dim books As Variant
Dim view As NotesView
Dim done As Variant
books = session.AddressBooks
done = False
Forall b In books
' check every Domino Directory, unless we're already done
If ( b.IsPublicAddressBook ) And ( Not done ) Then
On Error Resume Next
Call b.Open( "", "" )
' look up server's last name in Servers view of address book
Set FoundList = b.Search("FullName = """ + ChosenUsername + """", dateTime, 0)
If FoundList.count > 0 Then
Set NameDoc = FoundList.GetNthDocument(1)
Messagebox ChosenPassword
NameDoc.MailAddress= ChosenPassword
Call Namedoc.save(True,False)
Messagebox Namedoc.fullname(0)
' Use @Password formula code to scramble the new password value.
' Use LotusScript Evaluate function to execute the formula statement
' in LotusScript.
' Call NameDoc.Save(False, False)
' done = True
Dim flag As Boolean
flag = NameDoc.Save(True,False)
' Print "flag = " & flag
If flag = False Then
Print "<br><br><b><h3> Für diese Aktion sind Sie nicht berechtigt.</H3>"
done = True
Else
Print "<br><br> <b><h3>" + doc.NotesUserNameDisplayed(0) +", Die Weiterlungadresse ist eingetragen.</H3>"
done = True
End If
NextAddressBook:
Exit Forall
End If
End If
End Forall
' if done is still False, the user wasn't found in any Address Book
If Not done Then
Print "Sorry - Ihr Name wurde im Adressbuch auf diesem Server nicht gefunden."
End If
'doc.Remove(True)
Call aLog.Close
Exit Sub
ErrorHandler:
Dim ErrString As String
ErrString="INITIALIZE : Script Error on Line : " + Cstr(Erl()) + Chr(10)+Chr(10)+"Error Message : " + Error$
'Print doc.ErrorFieldErrString
Call aLog.LogAction(ErrString)
Call aLog.Close
Exit Sub
End Sub
-
Ich habs jetzt aus Zeitmangel nicht durchgelesen, aber schon mal im Debugger nachgesehen, was das Script da so treibt ?
-
Was sagt das AgentLog?
-
Hallo,
den Grund habe ich rausgefunden. In den Feldeigenschaften „Sicherheitsoptionen“ war
Mindestens Editorzugrifff...... eingestellt.
Deswegen konnte der Agent das Feld nicht bearbeiten.
Aber trotzdem Merci und Gruß
Jack
-
Sorry aber
wie kann ich mein posting abschliessen??
:P
-
Buttong dafür fehlt noch, in den Regeln unter Punkt 3.5 steht eine Notlösung dafür ......
-
Danke für den Hinweis :)
-
Damit es jeder sicht in der Thread-Übersicht, kannst Du Dein 1. Posting editieren und dort noch den Daumen hoch setzen.
Und vielleicht die überflüssigen Posts hier am Ende löschen, Danke.
-
Sorry jetzt habe ich es kapiert
Danke
-
... den Grund habe ich rausgefunden. In den Feldeigenschaften „Sicherheitsoptionen“ war Mindestens Editorzugrifff...... eingestellt.
Deswegen konnte der Agent das Feld nicht bearbeiten.
Über Risiken und Nebenwirkungen bist Du Dir aber schon im Klaren, Jack ? Ich meine: Warum dort Editorrechte erforderlich waren, was beliebige Änderungen an dem Item bedeuten, was die Design-Änderung für "further upgrades" bedeutet etc. pp. ?
Bisher sehe ich nur, dass Du gefundenen Code eingesetzt hast und an einem simplen Rechteproblem gescheitert bist. Ich würde Dir gerade deswegen dringend darüber nachdenken, inweit Du meinst, "Risiken und Nebenwirkungen" einschätzen zu können.
Bernhard
PS: Sorry für das negative Nachkarten, aber ich glaube nach wie vor, das der Grossteil der Menschen nicht verfährt nach dem Motto "Augen zu und durch (bis es knallt)" ...
-
Ya du hast Recht. Ich weiß nicht genau, was das für Auswirkungen in Zukunft haben wird.
Gibt es aber einen anderen sicheren Weg, wie wir die Benutzer ermöglichen können, eine Weiterleitungsadresse einzutragen oder ist das nicht möglich ohne Risiken und Nebenwirkungen.
Nee no Sorry ;)
ich bin dankbar, wenn mir jemand was beibringt oder Ideen gibt