Autor Thema: Mail mit Anhang aus Filesystem erstellen...  (Gelesen 2974 mal)

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Mail mit Anhang aus Filesystem erstellen...
« am: 23.08.05 - 15:30:01 »
Hallo zusammen!

Ich muss folgendes Problem lösen:

Hintergrund:

Wir nutzen neuerdings eine Software welche den Paketversand per DPD managt.
Hier werden Paketscheine gedruckt und ggf. bei Nachnahme oder Expresspaketen je eine
Datei erstellt welche an eine bestimmte E-mail versandt werden muss.

Die nette Dame vom Versand geht auf die 60 zu und nutzt erst seit wenigen Tagen einen
PC. Das stellt unsere EDV vor die Entscheidung zu kündigen oder der Dame zu helfen.
Wir sind natürlich Gentleman und wollen helfen.


Meine Vorstellung:

Um das Anhängen der Dateien zu vereinfachen möchte ich versuchen per Aktions-Button eine neues Memo zu erstellen.

In dieses Memo sollen, wenn im Filesystem (Laufwerk "D:\DPD\Nachnahme" bzw. "D:\DPD\Express") vorhanden alle Dateien eingefügt werden. Nach dem Import könnten diese Dateien dann gelöscht werden.

Die Dateinamen sehen in etwa so aus "acraco_Express050823.001". Da in den Verzeichnissen keine anderen Dateien sind, könnte alle Dateien angehängt und auch gelöscht werden.



Ich habe selbstverständlich schon im Forum nach ähnlichen Projekten gesucht, konnte aber keins finden das mir weiterhelfen würde.

Ich würde mich über jede(n)  Idee / Vorschlag freuen!

Gruß René
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #1 am: 23.08.05 - 15:37:47 »
Funktioniert mit LotusScript. Schau Dir in der Hilfe mal folgende Beispiele zu:
- Dir ... Dateien im Verzeichnisse auslesen
- Call NotesRichTextItem.embedObject(EMBED_ATTACHMENT,"",Pfad + Dateiname, "") ... Datei anhängen
- Kill ... Datei löschen
an
Gruß
Dirk

Offline William Wallace

  • Aktives Mitglied
  • ***
  • Beiträge: 103
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #2 am: 23.08.05 - 16:31:16 »
Hallo,

der Code hat bei mir funktioniert - ist bestimmt noch verbesserungswürdig aber 'it works'  ;)


Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim object As NotesEmbeddedObject
   Dim RTItem As Variant
   Dim AItem As NotesRichTextItem
   Dim pathName As String
   Dim fileName As String
   
   Set db = session.CurrentDatabase
   Set doc = New NotesDocument( db )
   Set RTItem = doc.GetFirstItem("Body")
   Set newDoc = db.CreateDocument
   newDoc.Form = "Test"
   Set AItem = New NotesRichTextItem(newDoc,"Body")
   
   pathName$ = "c:\Upload\*.*"
   fileName$ = Dir$(pathName$, 0)
   
   Do 
     Call AItem.EmbedObject(EMBED_ATTACHMENT,"", "c:\Upload\" & fileName$ )
     Kill "c:\Upload\" & fileName$
     fileName$ = Dir$()
   Loop Until fileName$ = ""
   
   newDoc.Save True,False
   
End Sub


Das Script erstelle ein Neues Dokument (hier Test) und attached alle Dokument aus dem Pfad (hier C:\Upload) in das Body-Feld hinein. Zeitgleich wird die Datei auf Fileebene gelöscht.

Gruß,
William

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #3 am: 23.08.05 - 16:43:29 »
Hi zusammen!

Vielen Dank schonmal für die prompten Antworten!

@diali: Ich habe gerade noch ein wenig in der Hilfe gelesen.
            Hat mir auf jeden Fall schon mal ein Stück geholfen!
           
            Ich habe vorher einfach nicht das passende gefunden, da ich nicht
            so recht wusste wonach ich suchen soll.
 
@William: Habe gerade auch getestet. Scheint zu funktionieren. Werd noch mal kurz testen und mich danach noch einmal melden!

Danke!

René

« Letzte Änderung: 23.08.05 - 16:46:04 von reraru »
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Positiver Nebeneffeckt
« Antwort #4 am: 23.08.05 - 16:59:49 »
Hi William!

Bei mir wird das Memo als entwurf gespeichert.
Das ist eigentlich ein positiver Nebeneffeckt.

Aber wodurch geschieht das?

Evtl. durch das speichern:

Code
newDoc.Save True,False
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline William Wallace

  • Aktives Mitglied
  • ***
  • Beiträge: 103
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #5 am: 23.08.05 - 17:05:36 »
richtig - ansonsten müsstest due ein doc.send machen...

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Und nochwas...
« Antwort #6 am: 23.08.05 - 17:05:59 »
Warum wird denn einmal "doc" und einmal "newdoc" genutzt?

Code
Set doc = New NotesDocument( db )
Set RTItem = doc.GetFirstItem("Body") 
Set newDoc = db.CreateDocument

System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline William Wallace

  • Aktives Mitglied
  • ***
  • Beiträge: 103
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #7 am: 23.08.05 - 17:08:27 »
wie gesagt, das script war schnell 'dahinprogrammiert'. Das Dim doc kann weg...
Das newdoc wird ja komplett neu erstellt und reicht demnach so.

 ;)

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #8 am: 23.08.05 - 17:19:00 »
Stimmt! ;-)

Dann bin ich beruhigt!

Ich lösche also:

Code
Dim doc As NotesDocument

Was bleibt ist:

Code
Set doc = New NotesDocument( db )

Das kann doch dann eigentlich auch weg, oder?
Nehme ich es weg bekomme ich "Variant does not contain an object"

Es geht mir nur ums Verständnis!
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline William Wallace

  • Aktives Mitglied
  • ***
  • Beiträge: 103
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #9 am: 23.08.05 - 17:30:21 »
Habe das Script mal überarbeitet - haben uns wohl missverstanden  ;)


   ' Deklarierung
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim object As NotesEmbeddedObject
   Dim RTItem As Variant
   Dim AItem As NotesRichTextItem
   Dim pathName As String
   Dim fileName As String
   
   ' Settings
   Set db = session.CurrentDatabase
   Set doc = New NotesDocument( db )
   Set AItem = New NotesRichTextItem(Doc,"Body")
   
   Doc.Form = "Test"
   pathName$ = "c:\Upload\*.*"
   fileName$ = Dir$(pathName$, 0)
   
   ' Fussschleife: attach und anschließender Kill   
                ' solange Dateien vorhanden sind
   Do 
      Call AItem.EmbedObject(EMBED_ATTACHMENT,"", "c:\Upload\" & fileName$ )
      Kill "c:\Upload\" & fileName$
      fileName$ = Dir$()
   Loop Until fileName$ = ""
   
   ' Speichern und tschüß
   Call Doc.Save (True,False)

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Na dann!
« Antwort #10 am: 23.08.05 - 18:00:10 »
Hi William!

Na dann habe ich es geschnallt.

Danke und einen schönen Abend!

Gruß René  ;D
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Einen hab ich noch...
« Antwort #11 am: 24.08.05 - 11:31:07 »
Moin William!

Ich habe das Script mal soweit auf meine Bedürfnisse angepasst.

Jetzt gibt es nur noch einen Fehler. Hier das Script:

Code
Sub Click(Source As Button)
	' Deklaration
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim object As NotesEmbeddedObject
	Dim RTItem As Variant 
	Dim AItem As NotesRichTextItem 
	Dim pathName As String
	Dim pathname2 As String
	Dim fileName As String
	Dim fileName2 As String
	Dim createmail As Boolean
	
   ' Settings
	Set db = session.CurrentDatabase
	Set doc = New NotesDocument( db )
	Set doc = db.CreateDocument
	Set AItem = New NotesRichTextItem(Doc,"Body")
	createmail = 0
	
	Doc.Form = "Memo"
	pathName$ = "P:\express\*.*"
	pathName2$ = "P:\nachnahme\*.*"
	fileName$ = Dir$(pathName$, 0)
	fileName2$ = Dir$(pathName2$, 0)
	
	
   ' Auf Expresspaket prüfen und ggf. Attachen, sonst Fehlermeldung!
	If filename$ <> "" Then		
		Do  
			Call AItem.EmbedObject(EMBED_ATTACHMENT,"", "P:\express\" & fileName$ )
			Kill "P:\express\" & fileName$
			fileName$ = Dir$()			
		Loop Until fileName$ = ""
		
		createmail = 1		
	Else
		Messagebox "Keine Express-Dateien vorhanden!" , MB_OK + MB_ICONSTOP + MB_DEFBUTTON1+ MB_APPLMODA , "Fehler"
	End If
	
	
	   ' Auf Nachnahmepaket prüfen und ggf. Attachen, sonst Fehlermeldung!
	If filename2$ <> "" Then		
		Do  
			Call AItem.EmbedObject(EMBED_ATTACHMENT,"", "P:\nachnahme\" & fileName2$ )
			Kill "P:\nachnahme\" & fileName2$
			fileName2$ = Dir$()			
		Loop Until fileName2$ = ""
		
		createmail = 1		
	Else
		Messagebox "Keine Nachnahme-Dateien vorhanden!" , MB_OK + MB_ICONSTOP + MB_DEFBUTTON1+ MB_APPLMODA , "Fehler"
	End If
	
	If createmail = 1 Then
		 'Adressierung
		doc.SendTo =  "empfaenger@dpd.net"
		doc.subject = "DPD Datenaustausch vom " + Now
		
   		' Speichern und tschüß
		Call Doc.Save (True,False)
	End If
	
End Sub

Fehlermeldung: "Illegal Function Call" bei folgdendem Statement:

Code
fileName2$ = Dir$()			

Habe einfach den Code kopiert und die Variablen um "2" ergänzt.

Hast Du eine Idee was schief läuft?

Gruß René
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #12 am: 24.08.05 - 11:33:42 »
mach mal die Settings für fileName2$ direkt vor dem If filename2$ <> "" Then. ich glaube Du hast von Dir$() immer nir eine Instanz.
Gruß
Dirk

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Mail mit Anhang aus Filesystem erstellen...
« Antwort #13 am: 24.08.05 - 11:37:05 »
Auszug aus der Designer-Hilfe
Zitat
The first call to Dir or Dir$ returns the name of the first file in the specified directory that fits the file name specifications in the fileSpec argument. Then:
Subsequent calls to Dir or Dir$ without an argument retrieve additional file names that match fileSpec. You can call the Dir function with no arguments as either Dir or Dir( ). You can call the Dir$ function with no arguments as either Dir$ or Dir$().
If there are no more file names in the specified directory that match the specification, Dir returns a Variant of DataType 8 (String); Dir$ returns the empty string ("").
If Dir or Dir$ is called without an argument after the empty string has been returned, LotusScript generates an error.
Gruß
Dirk

Offline reraru

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Geschlecht: Männlich
Und et klappt!
« Antwort #14 am: 24.08.05 - 11:49:40 »
Hi Alex!

Du hattest recht! Habe die Settings direkt vor das If gesetzt.
Nun klappt et!

Habe in der Hilfe den Beitrag nicht gefunden.

Die Designer Hilfe ist ja auch echt geil! Nur finde ich oft Dinge nicht auf Anhieb!

Gruß René
System:
Lotus Notes 8.5.2 / Lotus Domino 8.5.2 FP2
Notes-Formelsprache (wenig Script-Kenntnisse)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz