Ja, da habe ich die Büchse der Pandorra geöffnet mit meinem Post... Der Code ist ziemlich "hässlich" um zu funktionieren (habe da lange dran rumgefeilt). Ist aber schon ein paar Jahre her, heute würde der Code wieder ganz anders aussehen. Ich binde für die Funktionen eine eigene Teilmaske ein, und da gibt es die Felder "UserIsOwner" (in diesem Beispiel darf nur der Owner einer Datenbank die Funktion verwenden) und "INetFromCustom" (das Dialoglistenfeld mit den erlaubten Absendeadressen):
Im QuerySend der Teilmaske steht folgender Code:
If Continue Then
Call ChangeSenderAddressInPAB( source.Document )
End If
Funktion ChangeSenderAddressInPAB: Dim ws As New NotesUIWorkspace
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim locationString As String
Dim noteID As String
Dim newSender As String, oldSender As String
Dim isOwner As Integer
newSender = memo.GetItemValue( "INetFromCustom" )( 0 )
isOwner = memo.GetItemValue( "UserIsOwner" )( 0 )
If newSender = "" Or isOwner <> 1 Then Exit Sub
Set db = New NotesDatabase( "" , "names.nsf" )
locationString = ses.GetEnvironmentString( "Location" , True )
noteID = StrToken( locationString , "," , 2 )
Set doc = db.GetDocumentByID( noteID )
oldSender = doc.GetItemValue( "ImailAddress" )( 0 )
If oldSender <> newSender Then
Call doc.ReplaceItemValue( "CustomImailAddress" , oldSender )
Call doc.ReplaceItemValue( "ImailAddress" , newSender )
Call doc.Save( True , True )
Set uidoc = ws.EditDocument( True , doc )
Call uidoc.Save()
Call uidoc.Close(True)
Call ws.SetCurrentLocation( doc.GetItemValue( "Name" )( 0 ) )
End If
Call memo.ReplaceItemValue( "INetFrom" , newSender )
Dann im Postsend der Teilmaske: Call ResetSenderAddressInPAB( source.Document )
Funktion ResetSenderAddressInPAB: Sub ResetSenderAddressInPAB( memo As NotesDocument )
Dim ws As New NotesUIWorkspace
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim locationString As String
Dim noteID As String
Dim newSender As String, oldSender As String
Dim isOwner As Integer
isOwner = memo.GetItemValue( "UserIsOwner" )( 0 )
If isOwner = 1 Then Exit Sub
Set db = New NotesDatabase( "" , "names.nsf" )
locationString = ses.GetEnvironmentString( "Location" , True )
noteID = StrToken( locationString , "," , 2 )
Set doc = db.GetDocumentByID( noteID )
oldSender = doc.GetItemValue( "CustomImailAddress" )( 0 )
If oldSender <> "" Then
Call doc.RemoveItem( "CustomImailAddress" )
Call doc.ReplaceItemValue( "ImailAddress" , oldSender )
Call doc.Save( True , True )
Set uidoc = ws.EditDocument( True , doc )
Call uidoc.Save()
Call uidoc.Close(True)
Call ws.SetCurrentLocation( doc.GetItemValue( "Name" )( 0 ) )
End If
End Sub