Autor Thema: Dateiname aus Feldern kreieren?  (Gelesen 1801 mal)

Offline Andrycha

  • Junior Mitglied
  • **
  • Beiträge: 82
Dateiname aus Feldern kreieren?
« am: 30.03.07 - 13:59:40 »
Hallo Leute,

ich bin Neuling in Lotus Script und brauche daher eure hilfe. Ich habe hier ein etwas im Internet gefunden mit dem man eine HTML Datei (Thema Signatur) erstellen kann.
Man erstellt ein neues Dokument. Darin hat man bestimmte Felder, die der User ausfüllen muss, wie Name, Abteilung, Tel-Nr., E-Mail Adresse, etc. Das macht der USer brav und klickt dann auf einen Button und eine HTML Datei wird im notes data verzeichnis erstellt und ins CalenderProfil Dokument des USers in seinem Mailfile definiert. Das funktioniert soweit auch alles perfekt, aber ich wollte das Ding so anpassen, dass der Datei-Name, der nach dem Klick auf diesen Button, nicht plumpt "MailSigHTML.htm" heißt, sondern eine persönlich Note bekommt. Sprich: Ich möchte das der Dateiname um die E-Mail Adresse erweitert wird. z.B.: "MailSigHTMLa.mustermann@musterfirma.de.htm". So kann ich dann nachvollziehen, wessen Signatur-Datei dies ist.
Ist das möglich?

Hier der Code:
____________________________________________________________________________
Sub Click(Source As Button)
   Dim sess As New NotesSession
   Dim clientnab As New notesdatabase("","names.nsf")
   Dim thisloc As NotesDocument
   Dim wk As New notesuiworkspace
   Dim uidoc As NotesUIDocument   
   
   'get the Location value from the environment, and use it to get the current location document
   location = sess.getenvironmentstring("Location", True)
   i = Instr(location,",")
   j = Instr(i+1,location,",")
   locID = Mid(location,i+1,j-(i+1))
   Set thisloc = clientnab.getdocumentbyid(locID)
   'check if the location is online - if offline we can't do this
   If thisloc Is Nothing Then
      Msgbox "Cannot find the location document for the current location (weird, means that your Notes setup is Baaad!)"
   Else
      If    thisloc.locationtype(0) <> "0" Then
         Msgbox "Current location is not a LAN connected location; the profile in your local mail file will be updated.  Remember to replicate it with the server sometime soon. And note the caveat about Notes data directory locations.",64,"Local Location"
      End If
      'write the HTML as a file in the Notes data directory
      Set uidoc = wk.CurrentDocument
      Dim fileNum As Integer
      fileNum% = Freefile()
      NotesDataDir = sess.getenvironmentstring("Directory", True)
      HTMLFile = NotesDataDir  & "\MailSigHTML.htm"
      Open HTMLFile For Output As fileNum%
      Print #fileNum%, Uidoc.fieldgettext("HTMLCreated")
      Close #filenum         
         'go get the mail file and update the profile
      Dim maildb As New NotesDatabase("","")
      Call maildb.openmail 'should open the mail based on the current location
      
      If maildb.IsOpen Then
         Dim profdoc As notesdocument
         Set profdoc = maildb.getprofiledocument("CalendarProfile")
         If profdoc Is Nothing Then
            Msgbox "No Profile Document in your mail database.  Create one with Tools/Preferences and then do this action again."
         Else
            profdoc.enablesignature = "1" 'autosignature
            profdoc.signatureoption = "2" 'via HTML file
            profdoc.signature_2 = HTMLFile
            profdoc.signature = HTMLFile
            Call profdoc.save(True, False)
            Msgbox "Mail Profile updated to use your new signature file."
         End If
      Else
         Msgbox "Can't open the mailfile specified in your current location - could there be a case sensitivity issue on the filename in  your location vs the server?"
      End If
      
      
      
   End If 'no location
End Sub
____________________________________________________________________________

Ich habe schon versucht den Dateinamen aufzubröseln, aber es funktioniert nicht:

HTMLFile = NotesDataDir  & "\" & "MailSigHTML" & email & ".html"

Ich kann mir schon denken warum das nicht funktioniert. Man muss bestimmt das Feld "email" vorher irgendwie definieren und auslesen und etc., aber ich weiß leider nicht wie.

Könntet ihr mir hier helfen?

Gruß,
Andrycha


Driri

  • Gast
Re: Dateiname aus Feldern kreieren?
« Antwort #1 am: 30.03.07 - 14:07:10 »
In thisloc hast Du ja schon das Location-Dokument. Du könntest also z.B. die Mailadresse aus der Location auslesen.

Dim email As String
email = thisloc.GetItemValue("IMailAddress")(0)


Dann kannst Du dir das entsprechend zusammenfrickeln. Wobei ich jetzt nicht sicher bin, ob es nicht wegen des @ im Dateinamen evtl. Probleme geben kann.

Offline Andrycha

  • Junior Mitglied
  • **
  • Beiträge: 82
Re: Dateiname aus Feldern kreieren?
« Antwort #2 am: 30.03.07 - 14:17:27 »
Hallo Driri,

vielen Dank für die prompte Antwort. Leider kann ich die E-Mail Adresse aus dem Location-Dok. nicht nehmen, da nicht sichergestellt ist, dass da eine gepflegt ist. Bei uns kommt es auch vor, dass dort eine falsche Adresse steht (frag nicht warum).

Ich hätte schon gerne das Feld email, welches der User in der Maske einpflegen MUSS gezogen.

Vielleicht hast du noch eine Idee? Oder jemand anderes?

Danke nochmals,
Andrycha


Offline Andrycha

  • Junior Mitglied
  • **
  • Beiträge: 82
Re: Dateiname aus Feldern kreieren?
« Antwort #3 am: 30.03.07 - 16:04:38 »
Hallo,

ich habe etwas rumgebastelt und selber gelöst.

Für alle, die es interessiert:

Ich habe folgendes eingefügt:

Dim doc As NotesDocument
Set uidoc = wk.currentdocument
Set doc = uidoc.document

und die Zeile "HTMLFile = NotesDataDir  & "\" & "MailSigHTML" & email & ".html"

in

"HTMLFile = NotesDataDir  & "\" & "MailSigHTML" & doc.email(0) & ".html"

geändert! Das wars! Jetzt funtioniert meine Signatur als HTML File Erstellung perfekt.

Gruß,
Andrycha

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz