一、前言
acerun: yes"> 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”)