Domino 9 und frühere Versionen > ND6: Entwicklung
Attachment in RichText-Feld
DAU-in:
Und jetzt hatte ich so schön viel Text geschrieben:
Ich habe eine Maske mit einem Richtextfeld und einem Button. Der Anwender erstellt ein neues Dokument, wählt via button das Attachment aus, das uidoc wird gespeichert und geschlossen, dann das doc definiert, das Attchment in das Bodyfeld eingehängt und gespeichert, dann als uidoc wieder geöffnet.
Das Attachment hing jetzt dreimal an der richtigen Stelle.
Du musst das ganze natürlich jetzt entsprechend deinen Erfordernissen anpassen.
Und immer Frontend und Backend sauber trennen.
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim unidstring As String
'Frontend Anfang
Set uidoc = ws.CurrentDocument
Call uidoc.Save
unidstring = uidoc.Document.UniversalID
filenames = ws.OpenFileDialog( _
True, "Select files to be deleted",, "c:\tmp")
Call uidoc.Close
'Frontend Ende, Beginn Backend
Set doc = session.CurrentDatabase.getdocumentbyUNID(unidstring)
If Not(Isempty(filenames)) Then
Set rtitem = doc.GetFirstItem("Body")
If rtitem.type = 1 Then
Forall filename In filenames
Set object = rtitem.EmbedObject( EMBED_Object, "",Cstr(filename) )
End Forall
End If
Call doc.Save(True,True)
End If
'Backend ende, wieder Frontend
Call ws.EditDocument(False,doc)
End Sub
Leddl:
Hallo DAU-in!
--- Zitat von: DAU-in am 17.11.08 - 16:13:35 ---Und jetzt hatte ich so schön viel Text geschrieben:
--- Ende Zitat ---
;D Der wird nicht umsonst gewesen sein, ich werde mir das zu Herzen nehmen und meinen Code entsprechend umarbeiten. Danke auf jeden Fall dafür!
Hast du evtl. auch einen Vorschlag für mein zweites Problem?
Schöne Grüße,
Axel
DAU-in:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Dim rtitem As NotesRichTextItem
'Dim object As NotesEmbeddedObject
Dim unidstring As String
Set uidoc = ws.CurrentDocument
unidstring = uidoc.Document.universalid
Call uidoc.Close
Set doc = session.CurrentDatabase.GetDocumentByUNID(unidstring)
Set rtitem = doc.GetFirstItem("Body")
If Isarray (rtitem.EmbeddedObjects) Then
If ( rtitem.Type = RICHTEXT ) Then
Forall object In rtitem.EmbeddedObjects
If ( object.Type = EMBED_object ) Then
Call object.Remove
End If
End Forall
Call doc.Save(True,True)
End If
End If
Call ws.EditDocument(True,doc)
End Sub
das hat auf die schnelle gefunzt
P.S. ich mache das dokument auf im editiermodus( sonst wird das nix mit dem uidoc.Save), der code steckt in einem LöschButton
sollen denn alle attachments gelöscht werden?
Und wie löst der anwender das aus?
PS.PS: ich korrigiere:
If ( object.Type = EMBED_object Or object.Type = EMBED_attachment) Then
Call object.Remove
aber die Frage ist immer noch:
wie willst du bzw. sollen die Anwender das tun und ist das sinnvoll?
Leddl:
--- Zitat von: DAU-in am 17.11.08 - 16:24:13 ---das hat auf die schnelle gefunzt
--- Ende Zitat ---
Ja, bei mir jetzt auch, dabei ist das ja wirklich nicht großartig anders als bei mir... Das Embed_OBJECT hatte ich eben nicht abgefragt, das wirds gewesens sein.
--- Zitat von: DAU-in am 17.11.08 - 16:24:13 ---sollen denn alle attachments gelöscht werden?
--- Ende Zitat ---
Prinzipiell ja, wobei ich genau aus diesem Grund das ganze Hinzufügen und Löschen über Buttons kapsele. Eigentlich soll nämlich nur jeweils ein Bild je RichText möglich sein ;)
--- Zitat von: DAU-in am 17.11.08 - 16:24:13 ---Und wie löst der anwender das aus?
--- Ende Zitat ---
ButtonClick --> Hinzufügen, ButtonClick --> Löschen ;)
Beziehungsweise evtl. lasse ich das mit dem zweiten Button und die Bilder werden eben dann automatisch beim Hinzufügen neuerer Fotos gelöscht.
--- Zitat von: DAU-in am 17.11.08 - 16:24:13 ---wie willst du bzw. sollen die Anwender das tun und ist das sinnvoll?
--- Ende Zitat ---
Es handelt sich bei den potentiellen Usern um den typischen DAU (keine Anspielung ;D), die haben also eigentlich keine großartige Ahnung von Computern, sollen aber in regelmäßigen Zeiträumen Fotos von unseren Stores in Notes speichern. Um die dabei ein bisschen an die Hand zu nehmen, soll eben das Einfügen der Fotos so einfach (und gleichzeitig natürlich auch so wenig fehleranfällig) wie möglich sein.
Daher der Umweg über die Buttons (bzw. Aktionen), es soll also nur an einer Stelle geklickt werden können, damit gar nicht erst die Chance besteht, dass irgendwo etwas falsch gemacht werden kann. Sonst wird da wild in den Feldern rumgeschrieben, hinzugefügt und gelöscht und am Ende ist da mehr Chaos als einem lieb ist ;D
Aber wirklich vielen vielen Dank, du hast mir wirklich sehr geholfen. Das funktioniert jetzt wunderbar und ist bereit für die weitere Ausarbeitung. :)
Schöne Grüße,
Axel
Leddl:
Hallo zusammen,
nachdem ich mit eurer Hilfe das ganze eigentlich schon wunderbar zum Laufen bekommen habe, stehe ich jetzt doch wieder vor einem mir unbegreiflichen Fehler...
Gestern konnte ich noch nach Herzenslust Bilder über die Buttons hinzufügen und wieder löschen, jetzt streikt Notes plötzlich beim Löschen. Nach dem Entfernen des Bildes im Backend starte ich wie im folgenden Code das uidoc wieder im Editmodus. Ich möchte anschließend den Fokus in ein anderes Feld setzen und genau dort stellt Notes sich quer.
--- Code: ---Set uidoc = ws.EditDocument(True,doc)
Call uidoc.GotoField(FieldName )
--- Ende Code ---
Die Fehlermeldung, die ich mir mittels Errorhandler anzeigen lasse, lautet wie folgt:
--- Zitat ---Fehler #4418 - Property or Method is not available during QueryOpen: GotoField
--- Ende Zitat ---
Für mich eher unverständlich, da meines Erachtens nach ja das QueryOpen zu diesem Zeitpunkt schon durchlaufen sein sollte, oder lieg ich da falsch?
Der einzige Unterschied zu gestern liegt darin, dass ich vorhin mal kurz mit dem Sperren des Editmodes herumgespielt habe, wie er hier in den BP erklärt wird. Das habe ich dann allerdings doch schnell verworfen und alle Änderungen wieder rückgängig gemacht.
Hat eventuell irgendwer einen Ansatz für mich, oder eine Idee, woran dieser Fehler liegen könnte und was ich dagegen tun kann?
Vielen Dank und schöne Grüße,
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln