Find Duplicate Folders in a Database and Send Their Names and DB Link as E-Mail

Mindwatering Incorporated

Author: Tripp W Black

Created: 05/10/2001 at 01:45 PM


Notes Developer Tips

This agent was created to find duplicate folders in a Domino.doc application. It can be also be customized to find other duplicate design elements or duplicate folders. Once the final duplicates have been gathered. It is included in a notification e-mail to the database designer/project manager or appropriate person.

Option Public
Option Declare

Sub Initialize
Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim View As NotesView

Dim dCount As Long ' count of dString
Dim tCount As Long ' count of tString
Dim cCount As Long ' count of cString
Dim ctoggle As Integer
Dim jCount As Long ' count of all cString that exist so far in compare loop
Dim tString List As String ' tString is a list of all the folders
Dim cString List As String ' cString is a list of the folders being compared
Dim dString List As String ' dString is a list of all the folders that are duplicates
Dim temp As String
Dim bodyCount As Long

' maildoc dims
Dim maildoc As NotesDocument
Dim Body As NotesRichTextItem

Set db = Session.CurrentDatabase
dCount = 0
tCount = 0

Forall v In db.Views
If v.IsFolder Then
tString(Str(tCount)) = v.Name
tCount = tCount + 1
End If
End Forall
If tCount = 0 Then
Exit Sub
End If

' Cycle through each value and see it it matches a value in cString.
' If so put it in dString, else add it to cString
Forall i In tString
' Cycle through all elements of tString list and compare to growing cString
' skipping first tstring(0) because nothing is in compare list yet
If cCount=0 Then
' Set first item of folder list to the compare list
temp = tString(Str(cCount))
cString(Str(cCount)) = temp
Goto Skip
End If
jCount = 0
Forall j In cString
' For each element of tString sycle through current list of cString
temp = tString(Str(cCount))
If cString(Str(jCount)) = temp Then
dString(Str(dCount)) = temp
dCount = dCount + 1
Goto Skip
ctoggle = False
End If

jCount = jCount + 1
End Forall
If ctoggle= False Then
cString(Str(cCount )) = temp
End If
cCount = cCount + 1
End Forall
If dCount=0 Then
Exit Sub
End If
' Mail document with list of dString
Set maildoc = New NotesDocument( db )
maildoc.Form = "Memo"
maildoc.Subject = "Duplicate Folder Alert - " & db.Title
Set Body = New NotesRichTextItem ( maildoc, "Body" )
Call Body.AppendText _
( "The following folders are all duplicates in this database. ")
Call Body.AddNewLine( 1 )
Call Body.AppendText _
( dString(Str(bodyCount)) )
Call Body.AddNewLIne(1)
bodyCount = bodyCount + 1
Loop Until bodyCount >= dCount
' Call Body.AppendDocLink( db, db.Title ) Use doclink if had been Notes mail
Call Body.AddNewLIne(1)
Call Body.AppendText _
( db.server & " - " & db.filepath )
maildoc.From = "somefromname"
maildoc.Principal = "somefromname"
Call maildoc.Send( False, "sometoname" )
End Sub

previous page