Domino 9 und frühere Versionen > ND6: Entwicklung

Attachment in RichText-Feld

<< < (3/4) > >>

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