Domino 9 und frühere Versionen > ND8: Entwicklung
Wieder nochmal: Abfrage RTF nach Enthalt eines Anhangs
sja:
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
it898ur:
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é
sja:
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
it898ur:
IsEmpty prüft auch manche Eigenschaften auf leer - hier die Frage, ob ein RT-Feld ein Array von eingebetteten Objekten besitzt !
Gruß
André
dnotes:
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.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln