Autor Thema: Attachment speichern  (Gelesen 1792 mal)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Attachment speichern
« am: 11.09.02 - 16:32:22 »
Liebe Gemeinde,

ich versuche ein Attachment auf die Platte zu speichern,
leider bekomme ich eine
"Variant does not contain Object" Fehlermeldung bei
der mit -> markierten Zeile.

Was mache ich falsch ?

Gruß
Don Pasquale

Code

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.CurrentDatabase
->Set doc =  Current.NotesDocument
Dim rtitem As Variant
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
     Forall o In rtitem.EmbeddedObjects
     If ( o.Type = EMBED_ATTACHMENT ) Then
     Call o.ExtractFile( "c:\temp\" & o.Source )
     Call o.Remove
     Call doc.Save( False, True )
     End If
     End Forall



Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: Attachment speichern
« Antwort #1 am: 11.09.02 - 16:41:06 »
Das Document kannst Du so nicht ansprechen.

wenn Du aus dem Frontend kommst, dann
lautet das Fokussieren des Backend-Docs:

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document


Wenn Du aus dem Backend selbst kommst, mußt Du das zu bearbeitende Doc anders fokussieren. Nehmen wir an, Du hast in einer View das Doc mit einem "Häckchen" gemarked und drückst auf den Action Button, mußt Du über die unprocessed property das Doc arretieren:

(alles aus der Notes Designer Help, btw)
Dim session As New NotesSession
     Dim db As NotesDatabase
     Dim collection As NotesDocumentCollection
     Dim doc As NotesDocument
     Set db = session.CurrentDatabase
     Set collection = db.UnprocessedDocuments
     Set doc = collection.GetFirstDocument()

     While Not(doc Is Nothing)
tue dies tue das
           Set doc = collection.GetNextDocument(doc)
     Wend
etc...

Das Unprocessed "erkennt" den Haken quasi.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re: Attachment speichern
« Antwort #2 am: 11.09.02 - 17:36:01 »
Hi Rob_Green,

danke für deine Hilfe.

Front-End, Back_End, ok da ist noch ein weiter Weg.

Das Abspeichern des Attachments (immer ein tif) soll aus dem geöffneten Formular erfolgen. Front-End ?

Jetzt bekomme ich ein Type Mismatch.
Code

     Dim workspace As New NotesUIWorkspace
     Dim uidoc As NotesUIDocument
     Dim doc As NotesDocument
     Set uidoc = workspace.CurrentDocument
     Set doc = uidoc.Document
     
     Dim rtitem As Variant
     Set rtitem = doc.GetFirstItem( "Body" )
     If ( rtitem.Type = RICHTEXT ) Then
---->            Forall o In rtitem.EmbeddedObjects
                 If ( o.Type = EMBED_ATTACHMENT ) Then
                       Call o.ExtractFile( "c:\temp\Ablage\1" & o.Source )
                       Call o.Remove
                       Call doc.Save( False, True )
                 End If
           End Forall
     End If

« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: Attachment speichern
« Antwort #3 am: 11.09.02 - 18:21:48 »
das liegt daran, daß Du wohl das Script bereits hast laufen lassen. Denn beim ersten Lauf ist der Anhang wech, man sieht ihn aber noch optisch, da im $FIle das Attachement noch drin ist.

Mal auf die Schnelle (muß jetzt weg...nachher weiter..eventuell kannste es korrigieren):

Dim workspace As New NotesUIWorkspace  
     Dim uidoc As NotesUIDocument  
     Dim doc As NotesDocument  
     Set uidoc = workspace.CurrentDocument  
     Set doc = uidoc.Document  
     Dim Filename As String
     
     Dim rtitem As Variant
     Set rtitem = doc.GetFirstItem( "body" )
     If ( rtitem.Type = RICHTEXT ) Then
           
           Forall o In rtitem.EmbeddedObjects
                 
                 If ( o.Type = EMBED_ATTACHMENT ) Then
                       Filename = o.source                        
                       Forall files In doc.items
                             If files.name = "$FILE" Then
                                   If files.values(0) = Filename Then
                                         Call files.remove
                                   End If
                             End If
                       End Forall
                       
                       Call o.ExtractFile( "c:\temp\" & o.Source )
                       Call o.Remove
                       
                       Call doc.Save(True, True )
                 End If
           End Forall
           
           
     End If

Leider ist nach dem löschen des Eintrags in $FIle auch der spätere Bezug zum o.source weg, wenn man dann noch das Attachement löschen will. Man sollte also vorher o.source ner Variablen übergeben, damit es während des Laufs erhalten bleibt.
Hm..oder auch nicht...mal sehen, aber auf jeden Fall:
Dein Fehler lag hundert pro daran, daß das Script 2x - Nx durchgelaufen ist. Wenn einmal das Attachement weg ist,kommt umgehend der TypeMismatch!!!

Aber Achtung, wie gesagt, der Code ist noch fehlerhaft...wer macht weiter? Ich muß wehc jetzt!
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re: Attachment speichern
« Antwort #4 am: 11.09.02 - 18:43:35 »
Hi Rob,
danke für die Mühe. Ich habe einfach die If-Schleife auskommentiert und nun funzt es. Und das Attachment bleibt erhalten. Es ist zwar noch nicht _die_ Lösung, aber man kann damit arbeiten.

Danke
Don Pasquale


Code

Dim workspace As New NotesUIWorkspace  
Dim uidoc As NotesUIDocument  
Dim doc As NotesDocument  
Set uidoc = workspace.CurrentDocument  
Set doc = uidoc.Document  
Dim Filename As String
     
Dim rtitem As Variant  
Set rtitem = doc.GetFirstItem( "body" )  
If ( rtitem.Type = RICHTEXT ) Then  
           
Forall o In rtitem.EmbeddedObjects  
Call o.ExtractFile( "c:\temp\ablage\1\" & o.Source )  
Call o.Remove  
Call doc.Save(True, True )  
End Forall  
End If  
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz