I have some working code that I got from this forum for deleting private views. I would like to enhance it so it only deletes the private views when the shared copy changes. I did some digging and as far as I can tell to accomplish this I think I need to use NIFFindView. When I try to use it I get “external function not found”. Here is the full text of my script, the parts dealing with comparing the private and shared views is commented out.
Am I going about this the right way? Is there a more effective way of accomplishing the same thing?
Thanks,
Charles
(Declarations)
Dim g_DeletedUNIDs() As String
Const APIModule = “nnotes.dll” ’ Windows/32 only
Const NOTE_CLASS_VIEW= &H0008
Declare Function OSPathNetConstruct Lib APIModule Alias “OSPathNetConstruct” _
( Byval NullPort As Long, Byval Server As String, Byval FIle As String, Byval PathNet As String) As Integer
Declare Function NSFDbOpen Lib APIModule Alias “NSFDbOpen” _
( Byval PathName As String, DbHandle As Long) As Integer
Declare Function NSFDbClose Lib APIModule Alias “NSFDbClose” _
( Byval DbHandle As Long) As Integer
Declare Function NIFFindPrivateDesignNote Lib APIModule Alias “NIFFindPrivateDesignNote” _
( Byval hdb As Long, Byval NoteName As String, Byval NoteClass As Integer, NoteID As Long ) As Integer
Declare Function NIFFindView Lib APIModule _
( Byval hdb As Long, Byval NoteName As String, NoteID As Long ) As Integer
Sub DeletePrivateView(db As NotesDatabase, vname As String)
’ To open a Domino database on a server, use this function to create
’ the full path specification, and pass this specification as input to NSFDbOpen
’ or NSFDbOpenExtended.
Dim p As String
p$ = String(1024, " ")
OSPathNetConstruct 0, db.Server, db.FilePath, p$
’ This function takes a pathname to an existing Domino database or database
’ template (whether on a Lotus Domino Server or a local database), opens the
’ database, and returns a handle to it. All subsequent access to the database is
’ carried out via this handle. Use NSFDbClose to close the database file handle
’ and deallocate the memory associated with it.
Dim hDB As Long
NSFDbOpen p$, hDB
’ Given the name and NOTE_CLASS_xxx of a private design note (form, view,
’ folder, helpindex, macro, field, or replication formula ), this function returns the note ID.
’ Uses the View or Folder name passed to it - vname.
Dim retNoteID As Long
Dim result As Integer
result = NIFFindPrivateDesignNote(hDB, vname, NOTE_CLASS_VIEW, retNoteID)
'If result is anything other than 0, the Private Design Note could not be found
If result = 0 Then
Dim privateview As NotesDocument
Dim publicview As NotesDocument
' Get the Private View or Folder by its NoteID
Set privateview = db.GetDocumentByID( Hex$(retNoteID) )
'Get the Public View or Folder by its NoteID
'***************
'*** This line gives the "external function not found message ***
'***************
'result = NIFFindView(hDB, vName, retNoteID)
'Set publicview = db.GetDocumentByID(Hex$(retNoteID))
'Only delete the private view if it is older than the public view
'Dim privatedate As NotesDateTime
'Dim publicdate As NotesDateTime
'Set privatedate = New NotesDateTime(privateview.LastModified)
'Set publicdate = New NotesDateTime(publicview.LastModified)
'If privatedate.TimeDifference(publicdate) < 0 Then
Call privateview.Remove( True )
Print "Removing : " & vname
' Else
' Print vname & " is current"
' End If
Else
Print "Could not find " & vname
End If
’ This function closes a previously opened database.
NSFDbClose hDB
End Sub