技术开发 频道

操作Lotus Notes数据库

If C.IsHidden = True Then

    .ColWidth(j) = 0

    End If

    j = j + 1

    Next

    .Cols = j + 3

    .Col = j

    .Text = “处理情况”

    .Col = j + 1

    .Text = “处理原因”

    .Col = j + 2

    .Text = “处理责任人”

    .ColWidth(2) = 1800

    .ColWidth(3) = 1800

    Dim Doc As Object NOTESDOCUMENT

    Set Doc = View.GetFirstDocument

    .Row = 1

    j = 1

    Dim Str As String

    Do Until Doc Is Nothing

    .Col = 1

    .Text= Doc.GetItemValue(“登记号”)(0)

    .Col = 2

    Str = Doc.GetItemValue(“组卷号”)(0)

    .Text = Str

    .Col = 3

    .Text= Doc.GetItemValue(“文件字号”)(0)

    .Col = 4

    .Text= Doc.GetItemValue(“文件名”)(0)

    Set Doc=View.GetNextDocument(Doc)

    If Not Doc Is Nothing Then

    If j >= .Rows Then

    .Rows = j + 1

    End If

    .Row = j; j = j + 1

    End If

    Loop

    .MergeCells = flexMergeRestrictColumns

    ’MergeCells = 2

    .MergeCol(0) = True

    .MergeCol(1) = True

    .MergeCol(2) = True

    .MergeCol(3) = True

    .Redraw = True

    End With

    End Sub

    上面的代码中,调用initialize方法产生一个NotesSession 对象,它的方法有点类似VBA中调用Word的方法,如果采用 IsOpen可以判断是否已经打开对话框,函数GetDatabase()打开Notes数据库, 其中取得一个数据的函数用法有点特别:

    .Text = Doc.GetItemValue(“登记号”)(0)

    使用两个连续的括号似乎Visual Basic不允许,其实Domino中允许多值域,所以函数GetItemValue()返回的实质上是一个数组,第一个元素从0开始。

    按键盘F5开始运行,就可以看到输出结果。

    VB操作Domino COM的优缺点

    VB操作Domino COM具有以下优点:

    ● VB应用程序不需要调用Lotus Notes客户端就可以访问Notes的函数;

    ● 程序员可以在设计时使用早期绑定,其速度比晚绑定快,最主要的是可以利用VB6的智能语法提示功能;

    ● COM的运行速度比Lotus Script快;

    ● 可以独立于Lotus Notes客户端进行应用程序分发。

    遗憾的是Domino的COM与VBA等相比,还有一些明显缺点:

    ● 目前Lotus只支持后台的Domino对象,即session,对于UIWorkSpace 并不支持(如果支持,就意味Lotus客户端可以被用户或第三方程序取代);

    ● 由于COM只被Windows所支持,目前Unix还不能使用本文所论述的方法;

    ● 由于安全原因,Louts目前不支持DCOM技术;

    ● Lotus 提供的COM并不支持“ref”内存指针,标准COM提供三种内存指针:“ref”、“unique”和“ptr”,其中“ref”开销最小。

    结 论

    采用COM作为VB与Domino的桥梁,既可以发挥Domino的强大的文档处理能力,又可以发挥VB友好的可视化功能。文中例子是笔者实际工作中使用过的,该设计采用R5.05和VB6开发工具,在Win98、NT和Win2000下均工作正常。
 

0
相关文章