Autor Thema: Attachemnts in RTFs verschieben  (Gelesen 4812 mal)

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Attachemnts in RTFs verschieben
« am: 25.01.06 - 14:16:48 »
Hallo,

nun schonmeine zweite Frage zum Thema Attachments:

Kann man durch einen HotSpot Button gescheuert Attachments von einem RichTextFeld in ein anderes RichTextFeld kopieren? Und Wenn ja wie?

Bin leider bis jetzt kläglich gescheitert *hilfeeee*



cu
« Letzte Änderung: 25.01.06 - 14:26:47 von MasterminD »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachemnts in RTFs verschieben
« Antwort #1 am: 25.01.06 - 14:33:07 »
Das geht, aber nur über den Umweg über das Filesystem. D.h. du musst den Anhang in dem einen Feld in ein temp. Verzeichnis auf der Platte speichern (lösen) und im anderen Feld wieder anhängen. Anschließend die Kopie im temp. Verzeichnis wieder löschen.

Alles was du dazu brauchst findest du in der Designer-Hilfe.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Re: Attachemnts in RTFs verschieben
« Antwort #2 am: 25.01.06 - 14:40:46 »
in Script oder Formular?



Danke
cu

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachemnts in RTFs verschieben
« Antwort #3 am: 25.01.06 - 14:42:51 »
Ein Mastermind sollte das wissen  ;D

Das geht nur mit LotusScript.

Bernhard

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Re: Attachemnts in RTFs verschieben
« Antwort #4 am: 25.01.06 - 14:45:01 »
leider kann MasterminD nicht so gut Script wie er das gern möchte  :-:

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachemnts in RTFs verschieben
« Antwort #5 am: 25.01.06 - 15:09:52 »
leider kann MasterminD nicht so gut Script wie er das gern möchte  :-:

Dann musst du's eben lernen.  ;) Ohne geht's heut fast nicht.

Kann man durch einen HotSpot Button gescheuert Attachments von einem RichTextFeld in ein anderes RichTextFeld kopieren?

Sind die Felder in einem Dokument?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Re: Attachemnts in RTFs verschieben
« Antwort #6 am: 25.01.06 - 15:15:54 »
Ja sind sie. Direkt untereinander, nur eines ist in einem Berechneten Abschnitt um den zugriff zu steuern.


Habe mal schnell was ausprobiert:

Dim doc As NotesDocument
Dim rtitem As Variant
Dim fileCount As Integer
fileCount = 0   

Set rtitem = doc.GetFirstItem( "ProjectDocsRoot" )
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) Then
      fileCount = fileCount + 1
      Call o.ExtractFile _
      ( "c:\reports\newfile" & Cstr(fileCount) )
      Call o.Remove
      Call doc.Save( True, True )
    End If
  End Forall
End If



Bringt mir aber hier

Set rtitem = doc.GetFirstItem( "ProjectDocsRoot" )

einen "object variable not set" Fehler



cu
Rene

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachemnts in RTFs verschieben
« Antwort #7 am: 25.01.06 - 15:17:18 »
Hast du die Variable doc gesetzt?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Re: Attachemnts in RTFs verschieben
« Antwort #8 am: 25.01.06 - 15:19:32 »
Dim doc As NotesDocument
Dim rtitem As Variant
Dim fileCount As Integer
fileCount = 0   

Denke schon, oder  :)

EDIT:
OK, da liegt der fehler, sagte ja bin in Script unerfahren  ;D
Habe sie ja nur deklariert, aber was setzte ich in die doc variable in der Notes Document Klasse?
« Letzte Änderung: 25.01.06 - 15:22:59 von MasterminD »

Offline ghost

  • Aktives Mitglied
  • ***
  • Beiträge: 174
  • Geschlecht: Männlich
  • Notes ist gut!
Re: Attachemnts in RTFs verschieben
« Antwort #9 am: 25.01.06 - 15:24:56 »
Das reicht noch nicht, es muss noch ein Wert zugewiesen werden. Z.B.:

Dim ws as New NotesUIWorkspace
dim uidoc as NotesUIDocument
dim doc as NotesDocument

set uidoc = ws.CurrentDocument
set doc = uidoc.Document

Viele Grüße
ghost

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachemnts in RTFs verschieben
« Antwort #10 am: 25.01.06 - 15:31:29 »
Ich habe hier auf die Schnelle mal was zusammengestrickt, aus Zeitgründen aber leider nicht getestet. Die Fehlerbehandlung ist auch sehr rudimentär.

Code
Sub Click(Source As Button)
	
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim doc As NotesDocument
	Dim object As NotesEmbeddedObject
	Dim rtitem As NotesRichTextItem
	Dim strFilename As String
	
	Const strPath = "C:\Temp\"
	
	On Error Goto ErrorHandler
	
	Set uidoc = workspace.CurrentDocument
	Set doc = uidoc.Document
	
	'Lösen des Anhangs
	Set rtitem = doc.GetFirstItem( "RTF1" )
	If ( rtitem.Type = RICHTEXT ) Then
		Forall o In rtitem.EmbeddedObjects
			If ( o.Type = EMBED_ATTACHMENT ) Then
				strFilename = strPath & o.Source
				Call o.ExtractFile( strFilename )
			End If
		End Forall
	End If
	
	'Anhängen der Datei
	Set rtitem = doc.GetFirstItem( "RTF2" )
	Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", strFilename)
	
	'Löschen der Datei
	Kill strFilename
	
Ende:
	Exit Sub
	
ErrorHandler:
	Messagebox "Attachments kopieren - Fehler: " & Str$(Err) & " -> '" & Error$ & " in Zeile " & Str$(Erl) , 16, "Fehler"
	Resume Ende	
End Sub


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachemnts in RTFs verschieben
« Antwort #11 am: 25.01.06 - 15:34:02 »
Da das Dokument im FrontEnd geöffnet ist, die Manipulationen an RTIs aber im Backend stattfinden, sollte das Dokument noch im Backend gespeichert, im FrontEnd geschlossen und erneut geöffnet werden.

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachemnts in RTFs verschieben
« Antwort #12 am: 25.01.06 - 15:56:47 »
Stimmt.

Dafür gibt's doch was von....

...unserem Kollegen Anton (ata)

Zitat

REM Das aktuelle Dokument schließen und wieder öffnen......
    Function ReOpen(docThis As NotesDocument) As Integer
        Dim ws As New NotesUIWorkspace
        Dim uidoc As NotesUIDocument
        Dim dbThis As NotesDatabase
        Dim unid As String
 
        ReOpen = 0
        Set dbThis = docThis.ParentDatabase
        Call docThis.Save(True , True)
        unid = docThis.UniversalID
        docThis.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
        Set uidoc = ws.CurrentDocument
        Call uidoc.Close
        Set docThis = dbThis.GetDocumentByUNID(unid)
        Set uidoc = ws.EditDocument(True , docThis)
        Set docThis = uidoc.Document
        If docThis.HasItem("SaveOptions") Then 
            ' # ... das Feld SaveOptions wieder entfernen...
            docThis.RemoveItem("SaveOptions")
            Call docThis.Save( True , True )
        End If
        ReOpen = 1
        Print "Das Dokument wurde erneut geöffnet"
    End Function


Den Quelltext der Funktion fügst du mit Copy & Paste in den (Options)-Abschnitts des Hotspots oder der Maske ein.

Den Funktionsaufruf selbst machst du dann nach dem die Datei wieder angehängt wurde.

Code
...
	'Anhängen der Datei
	Set rtitem = doc.GetFirstItem( "RTF2" )
	Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", strFilename)
	
	'Löschen der Datei
	Kill strFilename
	
                 Call Reopen(doc)
....

Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Re: Attachemnts in RTFs verschieben
« Antwort #13 am: 25.01.06 - 16:40:51 »
Funktioniert super!!!!! :D

nur leider wird der Anhang im ersten RTF nicht gelöscht.
Könntet Ihr mir da noch helfen?

cu

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachemnts in RTFs verschieben
« Antwort #14 am: 25.01.06 - 16:49:30 »
Dir fehlt noch ein NotesEmbeddedObject.Remove nach dem NotesEmbeddedObject.Extract.

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Attachemnts in RTFs verschieben
« Antwort #15 am: 25.01.06 - 16:52:06 »
Yoo.

Code
...
	'Lösen des Anhangs
	Set rtitem = doc.GetFirstItem( "RTF1" )
	If ( rtitem.Type = RICHTEXT ) Then
		Forall o In rtitem.EmbeddedObjects
			If ( o.Type = EMBED_ATTACHMENT ) Then
				strFilename = strPath & o.Source
				Call o.ExtractFile( strFilename )
				Call o.Remove
			End If
		End Forall
	End If
...



Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Attachemnts in RTFs verschieben
« Antwort #16 am: 25.01.06 - 16:53:15 »
selber denken ist nicht verboten...

wenn Du Dir hier schon fertigen Code auf dem Silbertablett servieren lässt, dann könntest Du wenigstens VERSUCHEN, diesen auch zu verstehen und ggf. mit einer einzigen Zeile zu ergänzen:

call o.Remove

Das ganze ist deshalb doppelt tragisch, weil Du diese Zeile in Deiner (angeblich selbst zusammengestrickten) Lösung schon drin hattest....

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attachemnts in RTFs verschieben
« Antwort #17 am: 25.01.06 - 17:01:58 »
Stop, Torsten: Den Code hat Axel geliefert.

Selber denken (und lernen, lernen, lernen) halte ich aber auch für unumgänglich (und hatte daher auch keine Lösung gepostet). Vor allem, wenn man "Mastermind" ist ... Unverstandenen Code verbauen ist sträflich leichtsinnig.

Ausserdem befürchte ich, dass man das Problem auch gänzlich anders (ohne Verschieben von Attachments) hätte lösen können.

Bernhard

Offline MasterminD

  • Frischling
  • *
  • Beiträge: 30
Re: Attachemnts in RTFs verschieben
« Antwort #18 am: 26.01.06 - 07:41:27 »
Das ganze ist deshalb doppelt tragisch, weil Du diese Zeile in Deiner (angeblich selbst zusammengestrickten) Lösung schon drin hattest....


Morgen,

Ich sagte nie das es Code von wir ist, sondern das ich schnell mal was ausprobiert habe. Code kamm aus der Hilfe.  :-[

Und nach dem koehlerbv schrieb das von ein NotesEmbeddedObject.Remove fehlt, bin ich auch selber drauf gekommen woran es lag.

Ein bisschen denken kann ich auch  :-*
Ich tu mir hald noch schwer mit script. Sorry, für meine Unwissenheit  :'(


Danke für eure Hilfe

cu

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz