Create Individual Text Files With Values From A Multi-Value Keyword Field.

This generic script will read in all documents in a database. In a multi-value
keyword field that you select, it will create individual text files with
another value on the document that you select.
For example:
A document has an Email field, and a multi-value keyword field of mailing lists
that they would like to belong to. (Office Equipment, Athletics)
The script will read in the email address(me@me.com) and place that value in
two text documents, one called "Office Equipment.txt", and the other called
"Athletics.txt".
Each email address that has those values will be added to the correct list. The
text documents need not be created beforehand. The keyword list can have as
many values as needed.
Sub Click(Source As Button)
'Declarations
Dim nameofserver As String
Dim datab As String
Dim directory As String
Dim fieldname As String
Dim referencefield As String

'Getting user input for variables
nameofserver = Inputbox$("The name of the server where the database resides:")
datab = Inputbox$("The name of the database with the .nsf extension:")
fieldname = Inputbox$("The Keyword field name:")
referencefield = Inputbox$("The field name that will be added to the text
file:")
directory = Inputbox$("The directory where the text files will be created:")

'Calling the function that will create the lists
Call createLists(nameofserver, datab, directory, fieldname, referencefield)
End Sub


Sub createLists(nameofserver$, database$, directories$, fieldname$,
referencefield$)
'Declarations
Dim textList As Variant
Dim refField As Variant
Dim j As Integer, x As Integer
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim pathName As String, fileName As String

'Testing to make sure database exists.
Dim db As New NotesDatabase( nameofserver$, database$ )
If Not(db.isopen) Then
Msgbox "Could not open database."
Exit Sub
End If

'Setting collection to all docs in the database.
Set collection = db.AllDocuments

'Getting directory information.
directory$ = Dir( directories$, 16 )
If directory$ = "" Then Mkdir(directories$)
Chdir(directories$)

'Testing for keyword field
For j = 1 To collection.Count
Set doc = collection.GetNthDocument(j)
If doc.HasItem( fieldname$ ) Then
textList = doc.GetItemValue(fieldname$)
Else
Msgbox "Keyword field does not exist."
Exit Sub
End If

'Testing for reference field
x=0
Forall m In textList
If doc.HasItem( referencefield$ ) Then
refField = doc.GetItemValue(referencefield$)
Else
Msgbox "Reference field does not exist."
Exit Sub
End If

'Calling the function to write the text files.
If textList(x) <> "" Then Call WriteToFile(textList(x), refField(0))
x=x+1
End Forall
Next

Msgbox("All lists have been created and/or updated.")
End Sub


Sub WriteToFile(textList$, refField$)
Dim fileNum As Integer
fileNum% = Freefile()
Dim textDoc As Variant
Dim parse_string As String
Dim result As String
Dim location As Integer
parse_string = textList$

If refField$ = "" Then Exit Sub

'Taking out illegal characters for text filenames.
result = CheckString(parse_string)
textDoc = result & ".txt"

'Writing to file
Open textDoc For Append As fileNum%
Print #fileNum%, refField$
Close fileNum%
End Sub

Function CheckString(parse) As String
'Thanks to members of Notes.net for helping me 'with this function.
Const badchars = ":/"
usr_string = ""
ret_string = ""
ch = ""
usr_string = parse
For i = 1 To Len(usr_string)
ch = Mid(usr_string, i, 1)
If Instr(1, badchars, ch) Then
Print Removing Illegal Characters
Else
ret_string = ret_string + ch
CheckString = ret_string
End If
Next i

End Function

This was first published in November 2000

Dig Deeper

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchWindowsServer

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchEnterpriseLinux

SearchDataCenter

SearchExchange

SearchContentManagement

Close