Autor Thema: Attachment speichern  (Gelesen 1869 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 NotesSessionDim db As NotesDatabaseDim doc As NotesDocumentSet db = session.CurrentDatabase->Set doc =  Current.NotesDocument Dim rtitem As VariantSet 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