Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Stephanie am 21.10.04 - 14:44:28

Titel: Images in Richtextfelder attachen
Beitrag von: Stephanie am 21.10.04 - 14:44:28
Hallo Zusammen

Ich habe folgendes Problem. Würde gerne Bilder aus einem vordefinierten Pfad in diverse Notes Richtextfelder attachen.

Die Bilder werden wohl ins Dokument geschrieben jedoch nur in $FILE Felder. Kann man das umgehen.

Dim ses As New NotesSession
Dim uiw As New NotesUIWorkspace
Dim uid As NotesUIDocument
Dim ndb As NotesDatabase
Dim docCurrent As NotesDocument
Dim fileNameBig As String
Dim fileNameSmall As String
Dim rtitemBig As NotesRichTextItem
Dim rtitemSmall As NotesRichTextItem
Dim pathNameBig As String
Dim pathNameSmall As String
Dim pathNameBigEmb As String
Dim pathNameSmallEmb As String
Dim i As Integer
Dim FileNumber As String
Dim FileNumberSmall As String

Set uid = uiw.CurrentDocument
Set docCurrent = uid.Document

pathNameBig$ = "c:\Restwertzentrale\original\*.*"
pathNameBigEmb$ = "c:\Restwertzentrale\original\"
pathNameSmall$ = "c:\Restwertzentrale\thumbs\*.*"
pathNameSmallEmb$ = "c:\Restwertzentrale\thumbs\"
fileNameBig$ = Dir$(pathNameBig$, 0)

i = 0
Do While fileNameBig$ <> ""
i = i + 1
      
If i <= 15 Then
Set rtitemBig = docCurrent.GetFirstItem( "ImageB" & i )
If ( rtitemBig.Type = RICHTEXT ) Then
FileNumber$ = NotesLeft(fileNameBig$, "-", False)
Call rtitemBig.EmbedObject( EMBED_ATTACHMENT, "", pathNameBigEmb$ & fileNameBig$)
Kill pathNameBigEmb$ & fileNameBig$

fileNameSmall$ = Dir$(pathNameSmall$, 0)
Do While fileNameSmall$ <> ""
FileNumberSmall$ = NotesRight(NotesLeft(fileNameSmall$, "-", False), "_", True)
If FileNumber$ = FileNumberSmall$ Then

Set rtitemSmall = docCurrent.GetFirstItem( "ImageS" & i )
If ( rtitemSmall.Type = RICHTEXT ) Then
Call rtitemSmall.EmbedObject( EMBED_ATTACHMENT, "", pathNameSmallEmb$ & fileNameSmall$)
Kill pathNameSmallEmb$ & fileNameSmall$
Exit Do
End If
End If
fileNameSmall$ = Dir$()   
Loop
            
End If
End If
fileNameBig$ = Dir$(pathNameBig$, 0)
Loop
   
Call docCurrent.Save(True, True)

Bin für jede Hilfe dankbar.

Gruss

Stéphanie
Titel: Re: Images in Richtextfelder attachen
Beitrag von: TMC am 21.10.04 - 23:24:52
Stephanie,
bitte beantworte auch Deine offenen Beiträge:
http://www.atnotes.de/index.php?topic=18857.0

Zu diesem Beitrag hier:
Meinst Du damit, dass die Attachments nicht sichtbar sind, wenn Du das Dokument öffnest?
$Files sind prinzipiell entwicklerseitig ziemlich uninteressant. Interessant ist, was das RT-Item beinhaltet. Dazu solltest Du noch ein paar Infos geben, also was genau in Deinem RT-Item enthalten ist nach dieser Aktion.
Titel: Re: Images in Richtextfelder attachen
Beitrag von: TMC am 21.10.04 - 23:31:00
Noch was:

Designerhilfe sagt zu embedded Object:
Zitat
For this method to work you must set a default view in the database.

Probiere auch mal einen BackendDoc.Save nach jedem attachen, nicht erst zum Schluss.
Titel: Re: Images in Richtextfelder attachen
Beitrag von: Stephanie am 22.10.04 - 06:54:47
Hallo Matthias

Also meine RT-Item sind leer nach dem ich das Script laufengelassen habe, jedoch werden diverse $FILE Felder erstellt. Eine Default view habe ich auch und einen BackendDoc.Save nach jedem attachen funktioniert leider auch nicht.

Stéphanie
Titel: Re: Images in Richtextfelder attachen
Beitrag von: TMC am 22.10.04 - 21:38:30
Stephanie,

hast Du den Code mal durch den Debugger laufen lassen und dort alle Variablen geprüft?

Was sein könnte auf den 1. Blick:
Code
Set rtitemBig = docCurrent.GetFirstItem( "ImageB" & i )

Das gefällt mir irgendwie nicht. Ich weiß jetzt nicht, ob hier automatisch als String ein "ImageB13" erstellt wird, wenn das Integer = 13 ist. Z.B. in einer Msgbox wird das umgewandelt. Mach mal testweise ein CStr(i) statt i.
Gibt es denn die RT-Felder "ImageB1", ImageB2 etc. in dem Dokument?

Bei mir funktioniert z.B. dieser Code hier astrein (gestartet von einem Button aus einem geöffnetem Dokument), es erscheint ein Attachment im Richtextfeld "Body":

Code
	Dim uiws As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase	
	Dim uidoc As NotesUIDocument	
	Dim doc As NotesDocument
	Dim vFile As Variant
	Dim rti As NotesRichTextItem	
	Set db = session.CurrentDatabase	
	Set uidoc = uiws.CurrentDocument
	Set doc = uidoc.Document
	vFile = uiws.OpenFileDialog( False, db.Title, "All files|*.*|", "c:\")
	If Isempty(vFile) Then Exit Sub
	Set rti = doc.GetFirstItem("Body")
	Call rti.EmbedObject( EMBED_ATTACHMENT, "", vFile(0))
	Call doc.Save( True, True )
Titel: Re: Images in Richtextfelder attachen
Beitrag von: Glombi am 22.10.04 - 21:42:15
TMC hat einen scharfen Blick  ;)

Es muss tatsächlich
  Set rtitemBig = docCurrent.GetFirstItem( "ImageB" & cstr(i) )

heissen (oder man verwendet das + Zeichen, was Bernhard und ich nicht wollen  ;D )

Andreas
Titel: Re: Images in Richtextfelder attachen
Beitrag von: TMC am 22.10.04 - 21:49:07
Danke für die Bestätigung, Andreas  :)

Was mich noch wundert:
Müsste da denn nicht ein Error hochkommen wenn es das Item nicht gibt?

Matthias
Titel: Re: Images in Richtextfelder attachen
Beitrag von: koehlerbv am 22.10.04 - 23:56:36
Was mir jetzt irgendwie spanisch vorkommt: Was heisst eigentlich "Die RT-Felder sind leer" ? Im Fontend solltest Du dort die Attachment-Symbole sehen, aber das RTI ist natürlich leer - das Attachment verbirgt sich dann in einem $File-Item.
Ergo: Was erwartest Du konkret ?

Ausserdem bietet Dein Code, Stèphanie, genügend nicht abgefangene Fehlermöglichkeiten, die das ganze Ding zum Krachen bringen können. Was jetzt aber nichts mit Deinem für mich nach wie vor unbekannten Problem zu tun hat.

Set rtitemBig = docCurrent.GetFirstItem( "ImageB" & cstr(i) )
heissen (oder man verwendet das + Zeichen, was Bernhard und ich nicht wollen ;D )

Das war mir jetzt natürlich ein innerer Parteitag. Kann aber diesmal leider wohl nicht beteiligt sein (Matthias hat da wahr  ;) )

Bernhard (gespannt, wie das jetzt ausgeht)
Titel: Re: Images in Richtextfelder attachen
Beitrag von: Glombi am 23.10.04 - 09:30:33
Ok, ich habe es ausprobiert und was sagt man:
Set rtitemBig = docCurrent.GetFirstItem( "ImageB" & i )

geht auch  :o
Irgendwie versteh ich es ja nicht, denn es sollte ja eigentlich nur mit + anstelle von & gehen. Notes findet das Item.
Also darf man doch Äpfel und Birnen vergleichen - manchmal  ;D

Ich werde es trotzdem nicht machen, BASTA!

Andreas
Titel: Re: Images in Richtextfelder attachen
Beitrag von: Semeaphoros am 23.10.04 - 15:38:37
Natürlich geht "ImageB" & i

der Operator & führt gemäss Designer-Hilfe einen Cstr durch, wenn nötig.
Titel: Re: Images in Richtextfelder attachen
Beitrag von: Glombi am 23.10.04 - 16:16:19
Jens, Du hast mal wieder recht.
Irgendwie war ich verwirrt wegen & und +. Ich hätte vorher einen Blick in die Designer Hilfe werfen müssen, da steht es schwarz auf weiß.

Andreas