Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: RvM am 26.09.03 - 16:08:04
-
:-[
Ich gebe zu, ich bin im scripten nicht der Größte.
Ich möchte gerne PDF-Dateien aus einem Unterverzeichnis einfach nur selektieren und dann per Agent daraus je ein Dok mit entsprechenden Attachment machen.
hat jemand vielleicht eine Hilfe für mich?
-
yoo, da hab ich was.
hab momentan hier nur den Code; die Designelemente muß ich danach noch zusammenfummeln.
Du kannst damit beliebige Dateien eines Verzeichnisses entweder
- 1 Doc pro Datei
- alle files in ein doc
importieren lassen.
ich schaue nachher mal nach dem Rest
'==========================================================================================
' C L A S S "recursionManager"
'==========================================================================================
Public Class recursionManager
Private m_ws As NotesUIWorkSpace
Private m_ses As NotesSession
Private m_db As NotesDatabase
Private m_currentPath As String
Private m_fileSpecs As Variant
Private m_recurse As Variant
Private m_SingleDoc As Variant
' Private dummy As NotesItem
Private Function getImportRules As Variant
Dim doc As NotesDocument
Set doc = Me.m_db.CreateDocument
'continue = Me.m_ws.DialogBox("DefaultDialog", True, True, False, False, False, False, "Import Rules", doc) = -1
continue = Me.m_ws.DialogBox("($ImportRules)", True, True, False, False, False, False, "Import Rules", doc) = -1
If continue Then
Me.m_currentPath = doc.startPath(0)
Me.m_fileSpecs = doc.fileSpecs
Me.m_recurse = doc.canRecurse(0) = "1"
Me.m_SingleDoc = doc.OneDocument(0)="1"
If Right$(Me.m_currentPath, 1) <> "\" Then Me.m_currentPath = Me.m_currentPath & "\"
End If
getImportRules = continue
End Function
Private Function processDirectory (currentPath$) As Variant
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim Item As NotesItem
Dim fileList List As String
Dim importList List As String
Dim dirList List As String
Dim pb As New LNProgressBar(True)
Dim i As Long, x As Long
Call pb.SetText("Dateien importieren","Durchsuche: " & currentPath$)
x = 0
If Me.m_recurse Then
fileName$ = Dir$(currentPath$ & "*.*", 0)
Do While fileName$ <> ""
fileList(fileName$) = fileName$
fileName$ = Dir$()
Loop
fileName$ = Dir$(currentPath$ & "*", 16)
Do While fileName$ <> ""
If Left$(fileName$, 1) <> "." And Not Iselement(fileList(fileName$)) Then dirList(fileName$) = fileName$
fileName$ = Dir$()
Loop
End If
Forall fS In Me.m_fileSpecs
fileName$ = Dir$(currentPath$ & fS, 0)
Do While fileName$ <> ""
importList(fileName$) = fileName$
fileName$ = Dir$()
Print FileName$
x = x +1
Loop
End Forall
Call pb.SetProgressRange(x)
If m_SingleDoc Then
i = 1
Forall iL In importList
Set doc = Me.m_db.CreateDocument
Set rtitem = New NotesRichTextItem(doc, "Body")
Set object = rtitem.EmbedObject(EMBED_ATTACHMENT, "", currentPath$ & iL, "")
Call pb.SetProgressPos(i)
'doc.objPath = currentPath$
doc.Form = "FileImport"
doc.Subject = currentPath$ + iL
Call doc.Save(True, True, True)
i = i +1
End Forall
Else
Set doc = Me.m_db.CreateDocument
i = 1
Forall iL In importList
Set rtitem = New NotesRichTextItem(doc, "Body")
Set object = rtitem.EmbedObject(EMBED_ATTACHMENT, "", currentPath$ & iL, "")
' doc.objPath = currentPath$
' Set dummy = doc.ReplaceItemValue ( objPath , CurrentPath$ )
' Set Item = doc.ReplaceItemValue ( Form , "Fileimport" )
' Set Item = doc.ReplaceItemValue ( AttFileName , iL )
Call pb.SetProgressPos(i)
i = i +1
End Forall
'doc.Form = "FileImport"
'doc.Subject = "Datenimport"
Call doc.Save(True, True, True)
End If
If Me.m_recurse Then
Forall dL In dirList
newPath$ = currentPath$ & dL
If Right$(newPath$, 1) <> "\" Then newPath$ = newPath$ & "\"
Call processDirectory(newPath$)
End Forall
End If
Delete pb
End Function
Public Function run As Variant
continue = getImportRules
If continue Then Call processDirectory(Me.m_currentPath)
run = continue
End Function
Sub new
Set Me.m_ws = New NotesUIWorkSpace
Set Me.m_ses = New NotesSession
Set Me.m_db = Me.m_ses.CurrentDatabase
End Sub
Sub delete
End Sub
End Class
-
:-*
eknori du bist der hammer - thx
-
Na, was nicht ist, kann ja noch werden ;-) Jeder hat mal klein angefangen ...
Ein paar Tips (immer: Siehe DesignerHelp):
- Attachment selektieren mit NotesUIWorkspace.FileOpenDialog
- Wurde ein Attachment selektiert (nein: Ende Banane, Ja: Siehe unten)
- Neues Dokument erstellen (NotesDatabase.CreateDocument)
- Wichtige interne Felder vorbelegen (wie Form etc.)
- Gewünschtes RichText item erstellen (siehe NotesRichTextItem class)
- Mit NotesRichTextItem.EmbedObject (siehe dort) ausgewähltes File anhängen.
- Dokument speichern
Ich denke mal, am meisten lernst Du, wenn Du nach diesem Kochrezept vorgehst. Wenn es dann zwischendurch klemmt, meld' Dich gleich wieder ;-)
Bernhard
-
so, hab mal schnell ne Demo gebaut
( die Auswahl des Verzeichnisses funzt leider nicht, daher manuell eintragen )
-
Public Class recursionManager
Ich gebe zu, ich bin im scripten nicht der Größte
Ob das was wird oder eine wirkliche Hilfestellung war ...
Nichts für ungut,
Bernhard
-
deshalb ja auch die gebrauchsfertige DEMO DB...
-
Ulrich, ich weiß nicht ... Ist das gut ?
Ich grübel' weiter drüber nach ... Ich habe auch noch keine endgültige Meinung in solchen Sachen.
Ciao,
Bernhard
PS: Ich bleib' dran an dem Thema. Ulrich, kommst Du zum Treffen Ende November nach München ? Wenn ja: Gibt es einen bezahlbaren Flieger nach Salzburg? Dann bist Du herzlich bei uns eingeladen (Abholung - 25 km, Übernachtung(en) und gemeinsame Fahrt nach München ;-)
-
@Bernhard:
Sorry, aber ich glaube, ich muß meine Erdkunde Kenntnisse mal einer Revision unterziehen...
Erst lese ich in deinem Profil SIEGBURG.. Daher das Mißverständnis mit dem Biertrinken-Gehen.
Jetzt Salzburg ?? Yoo, klar, habe ich noch nicht drüber nachgedacht. Werde ich morgen checken...
Ulrich
-
Hi, eknori,
es sind nicht Deine Erdkunde-Kenntnisse - es ist der simple PISA-Lesetest ;-)))
SIEGSDORF ! 30 km vor Salzburg, rund um sind Traunstein, Inzell, Ruhpolding, Reit im Winkl, Richtung München kommt dann nach Rosenheim - jedenfalls rechts unten in Deutschland ;-))
A propos PISA: Meine Tochter (9. Klasse) hat heute eine PISA-Arbeit (also zumindest europaweites Niveau) in Mathematik zurück bekommen. Mit einer 3 (ohne Schusselfehler wäre es wohl ohne weiteres eine 2 gewesen) war sie die beste in ihrer (Realschul-)Klasse - im angeblichen besten (bayerischen) Schulsystem Deutschlands. Durchschnitt war fünfkommanochwas ! Und Susi ist kein mathematischer Überflieger ... Und wenn ich dann manchmal hier im Forum nur die pure Rechtschreibung sehe (Schussel-/Tippfehler und Kollegen mit einer anderen Muttersprache sind hier völlig aussen vor !) ...
Armes Deutschland ...
Herzliche Grüsse,
Bernhard
-
;)
Dank Euch alölen für die rasche Unterstützung., speziell Ulrich.
Mit dieser Lösung kann ich verdammt viel anfangen,
-
bei einer erfolgreichen vermarktung bin ich mit einer prov von 50 % einverstanden ... :D
-
Wenn Du mir ne offizielle Rechnung schreibst (das meine ich ernst) - habe ich nichts dagegen.
Umsonst ist nur der Tod - und der kostet schon das Leben.
-
kein Thema; habe ein Gewerbe angemeldet...