Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: sja am 07.05.13 - 12:52:19
-
Szenario
In einem Dokument gibt es zwei RTF „Kunden_Angebot“ und „Angebot_Abweichung“.
Feld „Kunden_Angebot“ enthält unbedingt einen Anhang, das Feld „Angebot_Abweichung“ kann das Anhang erhalten oder nicht.
Es gibt im Dokument einen Button beim Betätigung wird eine Email in der Email-Datei aktuelles User erstellt und in Body soll Anhang aus dem Feld „Angebot_Abweichung“ übernommen werden, wenn das Feld einen Anhang enthält. Wenn das Feld „Angebot_Abweichung“ keinen Anhang enthält, dann muss einen Anhang aus dem RTF „Kunden_Angebot“ in das Feld Body der Maildokument übernommen werden.
Zwei Variant habe ich ausprobiert und beide funktionieren nicht. Die beide s. Code unten.
Unendliche Dank für jede Hilfe!
Dim ws As NotesUIWorkspace
Dim s As NotesSession
Dim db As NotesDatabase
Dim dbMail As NotesDatabase
Dim uidb As NotesDatabase
Dim uiDocA As NotesUIDocument
Dim docA As NotesDocument
Dim uiDocM As NotesUIDocument
Dim rtitemA As NotesRichTextItem
Dim rtitemA1 As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim FileName As String
Dim flagAnhang As String
Sub Initialize
Set s = New NotesSession
Set ws = New NotesUIWorkspace
Set uidb = s.CurrentDatabase 'aktuelle Anwendung "Workflow Angebot"
Set uiDocA = ws.CurrentDocument 'aktuell geöffnete Anbebot-Dokument
uiDocA.Editmode = True
Call uiDocA.Refresh
Call uiDocA.Save
Set docA = uiDocA.Document
Set rtitemA = docA.GetFirstItem("Kunde_Angebot")
Set rtitemA1 = docA.GetFirstItem("Angebot_Abweichung")
Call Erstellen()
End Sub
Function Erstellen()
Dim mailDb As NotesDatabase
Dim uidoc As NotesUIDocument
Dim docM As NotesDocument
Set mailDb = New NotesDatabase( "", "" )
Call mailDb.OpenMail
Set docM = New NotesDocument( mailDb )
docM.Form = "Memo"
'1. Variante
‘Funktioniert ohne Problem, wenn das FELD "Angebot_Abweichung" enthält einen Anhang
‘Wenn das FELD leer ist bekomme ich folgende Fehlermitteilungen:
s. Bilde: 1_Debug.gif, 1_Debug_Fehlermeldung.gif
flagAnhang = "Angebot"
If Not rtitemA1 Is Nothing Then
If (rtitemA1.Type = RICHTEXT ) Then
ForAll object In rtitemA1.EmbeddedObjects
If ( object.Type = EMBED_ATTACHMENT ) Then
Call rtitemA1.CopyItemToDocument( docM, "Body" )
flagAnhang = "Abweichung"
Exit ForAll
End If
End ForAll
End If
End If
If flagAnhang = "Angebot" Then
If Not rtitemA Is Nothing Then
If (rtitemA.Type = RICHTEXT ) Then
ForAll object In rtitemA1.EmbeddedObjects
If ( object.Type = EMBED_ATTACHMENT ) Then
Call rtitemA.CopyItemToDocument( docM, "Body" )
Exit ForAll
End If
End ForAll
End If
End If
End If
End Function
'2. Variante
If ( rtitemA1.Type = RICHTEXT ) Then
FileName = rtitemA1.Values(0)
Set object = rtitemA1.GetEmbeddedObject( FileName )
If ( object Is Nothing ) Then 'Feld Angebot-Abweichung ist leer
If ( rtitemA.Type = RICHTEXT ) Then
FileName = rtitemA.Values(0)
Set object = rtitemA.GetEmbeddedObject( FileName )
If not( object Is Nothing ) Then
Call rtitemA.CopyItemToDocument( docM, "Body" )
End If
End If
Else
Call rtitemA1.CopyItemToDocument( docM, "Body" )
End If
End If
Bekomme ich folgende Fehlermeldung, unabhängig davon, ob das FELD Angebot_Abweichung leer ist oder nicht.
s. Bilde: 2_Debug.gif, 2_Fehlermeldung.gif
-
Hallo,
zwei Verbesserungsvorschläge:
1. Error-Handling einbauen, damit man sieht welche Zeile den Fehler wirft
2. rtitem.EmbeddedObjects auf Isempty abprüfen, bevor das Forall läuft
Gruß
André
-
Hallo André,
vielen Dank für deine Antwort
zu1.
in den Debug-Ausschnitten sind die Fehlerzeile markiert
zu 2.
wie ich das verstehe, Isempty überprüft Text, ich habe keinen Texct im Feld, bei mir soll Anhang überprüft werden
Sofia
-
IsEmpty prüft auch manche Eigenschaften auf leer - hier die Frage, ob ein RT-Feld ein Array von eingebetteten Objekten besitzt !
Gruß
André
-
Vor dem
ForAll object In rtitemA1.EmbeddedObjects
bau noch
If Not Isempty(rtitem.EmbeddedObjects) Then
ein, dann meckert Notes bei einem anhanglosen RT-Item nimmer.
-
Hallo,
herzlichen Dank @dnotes und @it898ur!
sorry, dass so spät mit der Antwort, ich hatte Urlaub und bin Heute 1. Tag am Arbeit
atnotes hilft wie immer! Alles funktioniert!
flagAnhang = "Angebot"
If Not rtitemA1 Is Nothing Then
If (rtitemA1.Type = RICHTEXT ) Then
If Not Isempty(rtitemA1.EmbeddedObjects) Then
ForAll object In rtitemA1.EmbeddedObjects
If ( object.Type = EMBED_ATTACHMENT ) Then
Call rtitemA1.CopyItemToDocument( docM, "Body" )
flagAnhang = "Abweichung"
Exit ForAll
End If
End ForAll
End If
End If
End If
If flagAnhang = "Angebot" Then
If Not rtitemA Is Nothing Then
If (rtitemA.Type = RICHTEXT ) Then
If Not IsEmpty(rtitemA.EmbeddedObjects) Then
ForAll object In rtitemA.EmbeddedObjects
If ( object.Type = EMBED_ATTACHMENT ) Then
Call rtitemA.CopyItemToDocument( docM, "Body" )
Exit ForAll
End If
End ForAll
End If
End If
End If
End If