Merci, damit konnte ich das Problem beim Erstellen eines Tickets aus einer Mail heraus lokalisieren
Gehe ich Recht in der Annahme, daß du die HilfeMail nicht von einem Notes Client aus gestartet hast ?
OK, knackpunkt ist die Funktion
Function CreatenewTicket(me_db As NotesDatabase, me_doc As notesdocument) As Boolean
%REM
#########################################
Goal: This function creates a new Ticket out of a mailed document
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Arguments: Description:
me_db Notesdatabase The Calling Notes DB
me_doc Notesdocument the document that is worked on
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Return:
boolean true or false if there was an error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Example:
ok = CreatenewTicket(db,doc)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VERSION / WHEN / WHO / CHANGES
1.0/24.03.2005/Thomas Schulte/none
'###################################################################################
%END REM
Dim newticket As NotesDocument
Dim item As NotesItem
Dim rtitem As NotesRichTextItem
Dim problem As String
Dim plainText As String
Const NEW_LINE = Uchr$(13)
On Error Goto ErrorHandler
createnewticket = True
Set NewTicket = New NotesDocument( me_db )
Set item = me_doc.GetFirstItem( "From" )
Call item.CopyItemToDocument ( NewTicket, "User")
'Set item = me_doc.GetFirstItem( "CopyTo" )
'Call item.CopyItemToDocument ( NewTicket, "OtherUsers")
'Set item = me_doc.GetFirstItem( "Body" )
'Problem = Left$(item.Text,100)
Set rtitem = me_doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
plainText = rtitem.GetFormattedText( False, 0 )
End If
Problem = Left$(plainText,100)
Call item.CopyItemToDocument ( NewTicket, "Body")
Set item = me_doc.GetFirstItem ("Subject")
Set item = NewTicket.ReplaceItemValue("problem", item.Text & NEW_LINE & NEW_LINE & Problem)
Set item = me_doc.GetFirstItem( "DeliveredDate" )
Call item.CopyItemToDocument ( NewTicket, "DateCreated")
Set item = NewTicket.ReplaceItemValue ("Form", "BugReport")
Set item = NewTicket.ReplaceItemValue ("Status", "0")
Set item = NewTicket.ReplaceItemValue ("Rerouted", "0")
Set item = NewTicket.ReplaceItemValue ("transformed", "1")
Call NewTicket.Save (True,True)
TheEnd:
Exit Function
ErrorHandler:
CreatenewTicket = False
Print "CreatenewTicket: " & Trim$(Str$(Err)) & " on line " & Cstr(Erl) & ": " & Error$
Resume TheEnd
End Function
Zum Einen konnte das Feld CopyTo in der ursprünglichen Mail nicht gefunden werden, zum Anderen halte ich das von Thomas codierte Handling des "Body" ('Set item = me_doc.GetFirstItem( "Body" )) für so nicht richtig.
Als Workaround kannst du den abgebildeten Code in die LS Lib lib.appl.functions übernehmen.
Dann sollte das Erstellen des Tickets kein Problem mehr sein.
Und ich mache mich dann an die Arbeit, das errorhandling noch einwenig zu verfeinern .