一、前言
Visual Basic是微软(中国)有限公司在中国力推的编程工具,它具有易学易用、编程简洁、程序集成化程度高等特点。Lotus Notes是Lotus公司推出的群件系统,它不仅仅是个应用软件,更是一个开发平台。
Notes数据库是文档型数据库,它使用LotusScript编写相应的代码完成设计者的需求。LotusScript语法类似于Visual Basic的语法,两者之间有什么联系呢?如何使用 Visual Basic 应用与Notes数据之间进行交互呢?Visual Basic也能像在Notes中一样轻松访问Notes类。本文讨论了使用Visual Basic 中访问Notes类的方法。
二、设计思路
Visual Basic中可以通过OLE功能来使用Notes.NotesUIWorkspace 和 Notes.NotesSession访问Notes类。使用CreatObject得到NotesUIWorkspace 和NotesSession对象。下面几行Visual Basic代码得到当前计算机上一个名为“testdb.nsf”的数据库对象。
Dim session As Object
Dim db As Obiect
Dim doc As Obiect
Set session = CreatObject (“Notes.NotesSession”)
Set db = session.GetDatabase(“”,”testdb.nsf”)
要通过Visual Basic 在桌面上打开Notes 数据库,应先得到NotesUIWorkspace对象,然后通过openDatabase 函数打开相应的数据库即可。
1. 在 Visual Basic 中不能像在LotusScript 中那样创建新的Notes对象,因此只能通过NotesUIWorkspace 和 NotesSession 这两个顶类层访问其他Notes对象。LotusScipt中的Notes类提供了一个非常完整的遍历整个层次结构的方法,我们完全可以用这个方法得到任何需要的Notes类。
2. 在Visual Basic中所有的Notes变量都应声明为Object类型。
3. 在Visual Basic 中访问Notes类,首先Visual Basic必须与notes装在同一台计算机上。
4. 使用上面的方法打开notes数据库时,会出现无法将notes窗口移到前端的情况。调用windows API中的ShellExecute即可解决这个问题。
三、程序实现
下面这段程序打开一个Notes数据库并把它移到最前面,使用户看到这个数据库。
Public Declare Funcrion ShellExecute Lib “Shell32.dll” Alias “ShellExecuteA”_
(byval hWnd As long, byval IpOperation As String , byval IpFile As String,_
Byval IpParameters As String, byval IpDirectory As Long,_
Byval nShowCmd As Long ) As Long
‘将Notes对象声明为Object
dim session as object
dim uiWs as object
dim dbname as string
dim servername as string
dim iRet as integer
‘在此填入你要打开的数据库和服务器名
dbname = “cipher/cipher.nsf”
servername = “rtpswgsserver”
‘创建NotesSession 对象,如果Notes已经运行,这句程序将打开Notes窗口;如果没有运行Notes,则启动它
set session = CreateObject (“Notes.NotesSession”)
‘通过调用windows API 函数使Notes窗口在前台打开
iRet = ShellExecute(Me.hWnd,”open”,”notes.exe”,VbNullString ,_
dummystring , SW_SHOWNORMAL)
‘创建NotesUIWorkspace对象
set uiWs = CreateObject (“Notes.NotesUIWorkspace”)
‘打开数据库
call OpenDatabase (servername , dbname)
‘要以特定的视图打开表单时使用
call OpenDatabase (servername , dbname , “viewname”)