Autor Thema: Detach Ordnersauswahl  (Gelesen 4567 mal)

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Detach Ordnersauswahl
« am: 20.08.03 - 12:48:09 »
Hallo, folgendes Script funktioniert eigentlich bestens. Da ist "natürlich" aber eine kleine Sache. Ist es möglich, anstatt den Ordner vorzugeben, eine Dialogbox für die Ordnerauswahl zu öffen?

ich verwende das Script in einem Agenten und es sollen nur ausgewählte Mails berücksichtigt werden.
Danke

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim rtitem As Variant
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set doc = collection.GetFirstDocument
   
   While Not (doc Is Nothing)
      Set rtitem = doc.GetFirstItem( "Body" )
      If ( rtitem.Type = RICHTEXT ) Then
         Forall o In rtitem.EmbeddedObjects
        'Dateien in Verzeichnis c:\Ordner lösen
            Call o.ExtractFile( "c:\Ordner\" & o.Name )
         End Forall
      End If
      Set doc = collection.GetNextDocument(doc)
   Wend
End Sub
« Letzte Änderung: 20.08.03 - 12:48:44 von MrMagoo »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Detach Ordnersauswahl
« Antwort #1 am: 20.08.03 - 12:54:58 »
Hilft Dir nicht  notesUIWorkspace.SaveFileDialog ?

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Detach Ordnersauswahl
« Antwort #2 am: 20.08.03 - 13:04:31 »
hm ich glaub ich verstehe dich nicht richtig. Ich will ja in einer Ansicht mehrer Mails erst per hand auswählen, den Agenten starten, der soll Fragen welches Verzeichnis und dann alle Datein in das Verzeichnis lösen. geht das mit ui ??

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Detach Ordnersauswahl
« Antwort #3 am: 20.08.03 - 13:08:23 »
Du stellst doch nur die Frage im FrontEnd.
Ansonsten: Die Abfrage Pfad in den Button, Übergabe Pfad ins Environment, dann Agent aufrufen, der die Anhänge der gelösten Docs löst.

Driri

  • Gast
Re:Detach Ordnersauswahl
« Antwort #4 am: 20.08.03 - 13:23:53 »
Hi,

ich hab so was mal mit nem Script gelöst (das ich mir irgendwo geklaut hatte  ;D). Funktioniert aber glaub ich nur unter Windows.

Hier mal die Funktion :

Function BrowseFolder (path As String, windowtitle As String) As String
   
   Dim X As Long, bi As BROWSEINFO, dwIList As Long
   Dim wPos As Integer
   Dim cam2 As String
   
   bi.pszDisplayName = path
   bi.hOwner = hWndAccessApp
   bi.lpszTitle = title
   bi.ulFlags = BIF_RETURNONLYFSDIRS
   
   dwIList = SHBrowseForFolder (bi)
   cam2 = Space$(512)
   X = SHGetPathFromIDList(Byval dwIList, Byval cam2)
   
   If X Then
      wPos = Instr (cam2, Chr(0))
      BrowseFolder = Left$ (cam2, wPos - 1)
   Else
      BrowseFolder = ""
   End If
   
End Function


Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Detach Ordnersauswahl
« Antwort #5 am: 20.08.03 - 14:21:39 »
Also
@koehlerbv: habe mir die sache mit "notesUIWorkspace.SaveFileDialog " genauer angesehen. Ordnerauswahl klappt gut, allerdings muss beim speichern dann ein File name vorgegeben werden und ich krieg es nicht hin das ein Ordner für z.B 20 Mailanhänge genommen wird

@diri nun ja mit Funktionen habe ich noch nie etwas gemacht.
Wird die funktion im Agent aufgerufen?? wie??
LS gibt mir auch Fehler bei diesem Script, siehe Anhang
Gruß
« Letzte Änderung: 20.08.03 - 14:22:45 von MrMagoo »

Driri

  • Gast
Re:Detach Ordnersauswahl
« Antwort #6 am: 20.08.03 - 14:33:07 »
Oops, sorry, da hab ich gepennt.

Okay, nochmal das ganze

Unter Declarations muß folgendes stehen :

Type BROWSEINFO
   hOwner As Long
   pidlRoot As Long
   pszDisplayName As String
   lpszTitle As String
   ulFlags As Long
   lpfn As Long
   lParam As Long
   iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (Byval pidl As Long, Byval pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Die eigentliche Funktion (s.o.) solltest du ja schon drin haben.

Der Aufruf erfolgt dann so :

Dim folder As String
folder = BrowseFolder ("","")


In "folder" hast du dann Pfad als String drin. Den kannst du dann beim Lösen der Dateien angeben.

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Detach Ordnersauswahl
« Antwort #7 am: 20.08.03 - 15:01:05 »
Also was soll ich sagen, es funktioniert, Danke
für alle nochmal das komplette Script. Dazu kommt dann noch die Funkton von Driri.

Zuerst wird ein Ordner abgefragt und dann die Anhänge der markierten Mails mit Ihrem Namen in diesem Ordner abgespeichert.

Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim rtitem As Variant
   Dim folder As String
   folder = BrowseFolder ("","")
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set doc = collection.GetFirstDocument
   
   While Not (doc Is Nothing)
      
      Set rtitem = doc.GetFirstItem( "Body" )
      If ( rtitem.Type = RICHTEXT ) Then
         Forall o In rtitem.EmbeddedObjects
        'Dateien in Verzeichnis c:\reports lösen
            Call o.ExtractFile(  folder+"\"  & o.Name )
         End Forall
      End If
      Set doc = collection.GetNextDocument(doc)
   Wend
End Sub
« Letzte Änderung: 20.08.03 - 15:12:17 von MrMagoo »

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Re:Detach Ordnersauswahl
« Antwort #8 am: 03.12.03 - 15:17:19 »
 ???
ich habe mir mal Eure Hirnschmalzproduktionen vorgenommen, da ich ein ähnliches Prob habe:
Ich will auch ein Verzeichnis-Auswahl-Fenster haben, um die darin liegenden PDF-Files an neue Doks anzuhängen.
Also (mein) Schritt 1: In einer Ansicht eine neue Aktion erstellen.
Schritt 2: Diri's Declaration in die Aktion Declaration packen
Schritt 3: Diri's Function  darunter packen
Schritt 4: In den click-event nur
Dim folder As String
folder = BrowseFolder ("","")
mal zum Testen reinpacken.
Beim Speichern kommt dann alerdings folgende Fehlermeldung:

BrowserFolder:8: Not a member: HOWNER

Was habe ich falsch gemacht?
-------
Gruß Rolf
--------------

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Detach Ordnersauswahl
« Antwort #9 am: 09.12.03 - 21:55:11 »
Seltsam, sollte eigentlich nicht sein.

Schau nochmal hier:
http://www.atnotes.de/index.php?board=9;action=display;threadid=10524

Da hatte ich das ganze mal zusammengefasst und klappt wunderbar bei copy & paste.

Was allerdings noch fehlt ist z.B. eine If - Abfrage wenn z.B. folder leer ist.

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz