Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: nsm am 19.09.02 - 21:41:44

Titel: attachmetslösen
Beitrag von: nsm am 19.09.02 - 21:41:44
hallo leute,
ich habe ein problem mit dem befehl EditDetach.

ich habe ein dok mit einem rtf feld in dem dateianhänge
eingefügt wurden. zusätzlich habe ich ein berechnetes
feld in die die namen der files errechnet werden.

nun soll es möflich sein, einen (oder mehrere) files zu
lösen. von der dialogbox erhalte ich den rückgabewert der filenamen.

das eigentliche prob ist nun, den ort an dem die files
abgelegt werden sollen zu erfragen.
das habe ich im ersten schritt mit einer dialogbox gemacht.
der eingragene ablageoert wird auch richtig übernommen.
nun wollte ich mittels editdetach, der fileliste und dem
pfad die anhänge lösen.
leider wird keines der files gelöst.

für anregungen inder formelsprache wäre ich sehr dankbar.

viele grüße nsm
Titel: Re: attachmetslösen
Beitrag von: Rob Green am 20.09.02 - 00:29:43
ist vielleicht nicht ganz perfekt wegen dem Befehl @prompt im Zusammenhang mit [localbrowse], da man eigentlich einen Ablagepfad auswählen soll, stattdessen aber gezwungen wird, auch noch unbedingt eine Datei im Pfad mit zu selektieren, sonst bekommt man die promptbox als User nicht geschlossen. Irgendwie doof...gibts vielleicht was besseres, aber soweit klappt es ganz gut:

file := @Prompt([LOCALBROWSE]; "Wählen Sie einen Ablagepfad"; "3");
@prompt([ok];"file";file);
@If(file = ""; @Return(1); "");
filepath:=@LeftBack(@LeftBack(file;".");"\\")+"\\";
@prompt([ok];"path";filepath);
_attachfiles:=@AttachmentNames;
_detachfile:=@Prompt([OKCANCELLIST];"Abfrage";"Datei wählen";@Subset(_attachfiles;1);_attachfiles);
@Command( [EditDetach] ; _detachfile ; filepath + _detachfile )

evtl. zur Erklärung von filepath= mache deswegen zweimal einen leftback, weil ich zunächst von rechts nach links den Filestring nach einem erstem "." durchsuche...dies sollte meine Datei sein...dann ab dem Punkt nochmals wieder von rechts nach links durchsuchend nach dem "\" (also Pfadangabenende).

Ich befürchte, daß diese Methode nur auf OS/2 und WIN Kisten laufen wird, denn Mac/Unix und Linux werden etwas anderes zurückliefern, das so dem Filepath Standard dieser beiden erstgenannten OS Systeme natürlich nicht mehr entspricht.
Titel: Re: attachmetslösen
Beitrag von: nsm am 20.09.02 - 12:38:18
hallo rob,

danke für deinen tip.
ist es auch möglich, mehrere anhänge gleichzeitig zu lösen?
wie würde eine script lösung dafür aussehen?

danek für die hilfe
Titel: Re: attachmetslösen
Beitrag von: Rob Green am 20.09.02 - 14:38:22
Gegenfrage zuerst: wie hast Du den Filepath ausgelesen, dh über welche Box? weil wie gesagt das LocalBrowse doof ist.

Mehrere Attachaments auf einmal lösen? Versuch doch einfach die prompt editcancellist zu einer multilist zu machen und dann schauen, was passiert. Selbst probieren geht über studieren  ;)

Script?
Auf notes.net, serchdomino.com oder deutschsprachig auf spotlight.de (Lotus Forum) wirst Du auf jeden Fall über die Volltextsuche massig Scriptbeispiele finden.
Einfach nach "embed" suchen oder "attachment"
Titel: Re: attachmetslösen
Beitrag von: muR am 27.09.02 - 13:08:30
Hallo Rob,

Hab Dir einen Auszug aus meinem Script kopiert. Ich Speichere aus der aktuell ausgewählen Mail die Anhänge auf ein Verzeichnis auf c:\... hinaus.

Die Variable Pfad must Du noch definieren. Hoffe ich habe Dir alles hinein kopiert. Bei mir wird der Pfad aus einer INI-Datei ausgelesen.

Gruß
muR

Dim ws As New NotesUIWorkspace      'Deklarieren der Variablen für die Datenbank
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim lvMail As Variant
lvMail = Evaluate("@MailDbName")      
Set db = New NotesDatabase(lvMail(0), lvMail(1))    

'Set db = s.Currentdatabase      'Zuweisen der Datenbank alternativ zu oben
Set dc = db.unprocessedDocuments
Set doc = dc.getfirstdocument()

If doc.HasEmbedded Then                        
   Set rtitem = doc.GetFirstItem( "Body" )
   If ( rtitem.Type = RICHTEXT ) Then
   Forall o In rtitem.EmbeddedObjects
             If ( o.Type = EMBED_ATTACHMENT ) Then
       'Messagebox o.name                              
      Call o.ExtractFile ( Pfad & "\" & Filename1 )      'Anhang auf Laufwerk "Pfad" speichern
     End If
   End Forall
End If
Titel: Re: attachmetslösen
Beitrag von: Rob Green am 27.09.02 - 13:20:42
hi Alex,

nett von Dir...nur.. ;D....ich hatte an sich eine ergänzende, anderslautende Frage, und zwar: wie liest man per Formelsprache über eine Abfragebox den vom User angegebenen Pfad aus, ohne daß wie im obigen "localbrowse" der User dummerweise eine Datei anwählen muss, um die Abfragebox zu schliessen.