Solved

Lotus Script - Exporting Attachments and Folder Creation

Posted on 2016-09-01
2
67 Views
Last Modified: 2016-09-06
What I have is a database with many attachments with the same name. Some in the same document or some with the same name but in two different documents. What I'm trying to do is export all of the attachments into a seperate folder based on the value of the number field "FileNumber". If any attachments with the same name exist in the same document the file name is appended with a "1".

 When trying to create a variable to cast a file number into a string I get a Type Mismatch error.
Dim FileNumberString As String
FileNumberString = CStr(FileNumber)

Below is the entire script

Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim nextdoc As NotesDocument
	Dim dirpath As String
	Dim view As NotesView
	Dim fullpath As String
	
	Set db = session.Currentdatabase
	Set view = db.GetView("All Documents")
	Set doc = view.Getfirstdocument
	
	Dim num As Integer
	dirpath = "D:\PlantEng"
	If (Dir$ (dirpath, 16)="") Then
		MkDir dirpath
	End If
	
	While Not doc Is Nothing
		Set nextdoc = view.getnextdocument(doc)
		
		'--Loop through all attachments in document and detach into D:\PlantEng
		Dim rtitem As Variant
		Set rtitem = doc.GetFirstItem("attachments")
		
		'--Get the unique file number attached to the document
		Dim FileNumber 
		Set FileNumber = doc.GetFirstItem("FileNumber")

		'--Create a variable to cast a file number into a string
		Dim FileNumberString As String
		FileNumberString = CStr(FileNumber)
		
		'--Create a variable to store the FileNumber as a folder
		Dim fileNumberFolder As String
		fileNumberFolder = dirpath + "\" + FileNumberString

		'--Create a new folder based on the file number
		MkDir fileNumberFolder


		'--if array of embedded objects exist them detach all attachments into D:\PlantEng
		If IsArray(rtitem.EmbeddedObjects) Then
			ForAll o In rtitem.EmbeddedObjects
				If(o.type = EMBED_ATTACHMENT) Then
					If o.name <> o.source Then
						fullpath = fileNumberFolder & "\" & o.source & +1
					Else
					fullpath = fileNumberFolder & "\"& o.source
					End If
					Call o.ExtractFile(fullpath)
				End If
			End ForAll
		End If
	Set doc = nextdoc	
	Wend
	End Sub

Open in new window

0
Comment
Question by:nftcadmins
2 Comments
 
LVL 46

Accepted Solution

by:
Sjef Bosman earned 500 total points
ID: 41781045
If you check the type of the "value" of FileNumber, you'll find that it's not a number, but a NotesItem (if it exists at all).

The method GetFirstItem will give you a NotesItem, the method GetItemValue will give you an array of values. You can get to the individual values of a NotesItem by using FileNumber.Values(n)
0
 
LVL 1

Author Closing Comment

by:nftcadmins
ID: 41786370
Worked perfect. Thanks!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

I thought it will be a good idea to make a post as it will help in case someone else faces these issues. I trust this gives an idea how each entry in Notes.ini can mean a lot for the Domino Server to be functioning properly. This article discusses t…
For beginners of Lotus Notes user this is important to know about the types of files and their location supported by IBM Notes. Mostly users are unaware about how many file types are created and what their usages are. This Article is fully dedicated…
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now