View member feedback to this tip.
I needed to do a search on a large amount of data and came across the 65k limit. I have developed a workaround using LotusScript.
If I had been able to do this in formula language it would have been something like:
@Unique(@DbLookup( "" : "NoCache" ;
"" ; "myview" ; "abc" ; 2 ))
Here is a summary of the script process:
First set up a database search and put all the matching documents into a folder. The first column in the folder is categorized with the data you want. Cycle through the entries and set up an array with details from this column. You now have an array with all the data and can continue with whatever other work needs to be done. The folder can now be emptied.
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim searchFormula As String
Dim view As NotesView
Dim entry As NotesViewEntry
Dim nextEntry As NotesViewEntry
Dim i As Integer
Dim viewNav As NotesViewNavigator
Dim doc As NotesDocument
Set db = session.CurrentDatabase
'set up the search criteria - eg
searchFormula$ = { @Contains
(@LowerCase(Field1); "abc") &
@IsUnavailable
($conflict) }
'do the search and put into a temporary folder
Set collection = db.Search
(searchFormula$,Nothing ,0)
Call collection.PutAllInFolder( "(tempFolder)" )
'create a view navigator (the first column
is categorised)
Set view = db.GetView("(tempFolder)")
Set viewNav = view.CreateViewNav
'get the first entry and then cycle through the rest
Set entry = viewNav.getFirst
Do While entry.iscategory
Set nextEntry = viewNav.getNext(entry)
Set doc = nextEntry.document
'put the values into an array for using later
Redim Preserve Array(i)
Array(i) = doc.Field1(0)
i = i + 1
Set nextEntry = viewNav.getNextCategory(entry)
If nextEntry Is Nothing Then Exit Do
Set entry = nextEntry
Loop
'empty the folder so it can be used again
Call collection.RemoveAllFromFolder
( "(tempFolder)" )
MEMBER FEEDBACK TO THIS TIP
What happens if several users use this function simultaneously? In my opinion, you must use private folders (or shared, private on first use).
Axel
******************************************
I designed this function to be used as an overnight server process so multi-user functionality was not a requirement. I see no problem with using personal folders. These can be created and removed just as easily.
Cathy Fitzherbert, tip author
******************************************
Can you please elaborate on how this 65k limit was reached?
Anthony R.
******************************************
The 65k limit was reached due to the large amount of data in the result set. Both @DbColumn and @DbLookup have this limitation and this is a known problem. I'm not sure if this is fixed in R6.
Cathy Fitzherbert, tip author
Do you have comments on this tip? Let us know.
This tip was submitted to the SearchDomino.com tip exchange by member Cathy FitzHerbert. Please let others know how useful it is via the rating scale below. Do you have a useful Notes/Domino tip or code to share? Submit it to our monthly tip contest and you could win a prize and a spot in our Hall of Fame.