f 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下均工作正常。