0

同じ内部ドメイン内の最近の連絡先ビューで重複するエントリを見つけるためのコードを記述する必要があります。外部のインターネット連絡先には触れません。それを行うための特別なプロパティまたはメソッドはありますか (ロータス スクリプトで?)、すべてのビュー エントリをサーバー nab と比較するのは良い考えですか? 誰かがこれを行うための最良の方法を提案できますか?

4

2 に答える 2

1

必要なものを完全に入手できるかどうかはわかりませんが、ここに私が提案するものがあります

ビュー(最近の連絡先)を介して移動し、リストを作成してそこにキー/ドキュメントの一意のペアのみを配置し、すべての重複を別の場所に保存する小さなコードの束を作成することをお勧めします。

そのようなコードでエージェントを作成できます(注意してください、間違ったキーを使用する可能性があるため、どのフィールドが一意のキーであるかを定義してください)つまり

Dim session As New NotesSession
Dim view As NotesView
Dim doc As NotesDocument
Dim uniquedocs List As Variant
Dim duplicates As string
Dim key As String

Set view = session.Currentdatabase.Getview("(Recent Contacts)")
Set doc = view.Getfirstdocument()
While Not doc Is Nothing
    ' this is the unique key, please change it if you need
    key = doc.Getitemvalue("MailDomain")(0)

    If key <> "" Then
        If Not IsElement(uniquedocs(key)) Then
            Set uniquedocs(key) = doc
        Else
            If duplicates <> "" Then duplicates = duplicates & " | "
            duplicates = duplicates & key
        End If
    End If

    Set doc = view.Getnextdocument(doc)
Wend

MsgBox duplicates

duplicates - 少なくとも 2 件の連絡先が表示されているすべてのメール ドメインを含む文字列 (最近の連絡先)

于 2012-10-26T07:14:37.393 に答える
0
Sub Initialize
On Error GoTo errHandler

Dim session As New NotesSession
Dim db As NotesDatabase
Dim currdb As NotesDatabase
Dim view As NotesView
Dim view1 As NotesView
Dim vc As NotesViewEntryCollection
Dim namesentry As NotesViewEntry
Dim serdoc As NotesDocument
Dim localdoc As NotesDocument
Dim item As NotesItem


Dim dname As String
Dim serverfullName() As String
Dim localfulName As String
Dim formula As String
Dim result As Variant
Dim count As Integer 

'Getting all the documents from servers NAB ,put that in document collection
Set db=session.GetDatabase("Myserver","names.nsf")
Set view=db.GetView("People")
Set vc = view.AllEntries
Set namesentry = vc.Getfirstentry()
ReDim Serverfullname(CInt(vc.Count))
count = 0

'storing fullnames in array
While Not namesentry Is Nothing

    Set serdoc = namesentry.Document
    serverfullName(count) = serdoc.Getitemvalue("FullName")(0)
    Set namesentry = vc.Getnextentry(namesentry)
    count = count + 1
Wend 
'keeping the string format for Comparison   
Dim x As String
Dim iteration As Integer
x = ""
iteration = 0
ForAll i In Serverfullname
    iteration = iteration + 1
    If i ="" Then
    ElseIf count = iteration Then   
        x = x + |"| + i + |"|
    Else
        x = x + |"| + i + |"| + ":"
    End If
End ForAll
'MsgBox x 'Displaying servers fullname list

'Geetting local NAB contacts
Set currdb= session.CurrentDatabase
Dim selFormula As String
'creating New view to filter documents with same domain
selFormula= {SELECT @UpperCase($AutoCreatedList)  = "DIP" & @LowerCase(MailDomain)=@LowerCase("mydomain")}
Call currdb.Createview("RecentView",selFormula)
Set view1 = currdb.GetView("RecentView")
Set localdoc = view1.GetFirstDocument


While Not localdoc Is Nothing 

    localfulName = localdoc.Getitemvalue("FullName")(0)
    Dim indexresult As Variant
    Dim Formula1 As String

    Formula1 = |@Contains(| & x & |;"| + Localfulname + |")|
    'MsgBox Formula1
    indexresult = Evaluate(Formula1)
    If indexresult(0)= 0 Then

        MsgBox " Duplicate entry " & localfulname & "."
        'Call localdoc.Remove(true)
    End If

    Set localdoc = view1.Getnextdocument(localdoc)
Wend
Exit sub

errHandler: MsgBox Error() & " " & Erl() Exit sub End Sub

于 2012-10-26T10:18:13.297 に答える