Lotus Script - Exporting Attachments and Folder Creation

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

LVL 1
nftcadminsNetwork System AdministratorAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Sjef BosmanGroupware ConsultantCommented:
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)

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
nftcadminsNetwork System AdministratorAuthor Commented:
Worked perfect. Thanks!
kostas GkCommented:
So what is the final code?
Thank you in advance.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Lotus IBM

From novice to tech pro — start learning today.