亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区
注冊(cè)
|
提交需求
|
訂閱
|
English
首 頁
解決方案
產(chǎn) 品
服 務(wù)
支 持
EDN系統(tǒng)
成功案例
關(guān)于我們
聯(lián)系我們
樹結(jié)構(gòu)圖
EDN系統(tǒng)
圖形圖像
網(wǎng)絡(luò)安全
項(xiàng)目專題
WEB開發(fā)
辦公系列
操作系統(tǒng)
數(shù)據(jù)庫
程序設(shè)計(jì)
TOP 10
在Foxmail中如何使…
Ftp 子命令
BigDecimal
MSN在線客服功能模塊使…
會(huì)員卡使用方法說明
DataInputStr…
留言板功能說明
CScript
BufferedInpu…
設(shè)置打印機(jī)
您現(xiàn)在的位置:
>
技術(shù)沙龍
>
程序設(shè)計(jì)
>
VB
>
VB操作LotusNotes數(shù)據(jù)庫
相關(guān)軟件
>
VB操作LotusNotes數(shù)據(jù)庫
創(chuàng)建者:
webmaster
更新時(shí)間:
2005-05-18
00:00
今天,異構(gòu)數(shù)據(jù)環(huán)境已經(jīng)是一個(gè)普遍存在的問題,Windows常用開放數(shù)據(jù)庫互連標(biāo)準(zhǔn)ODBC進(jìn)行數(shù)據(jù)交換與操作,后來微軟又推出了ADO技術(shù),例如用VB操作Oracle、Sybase和SQL Server等,其應(yīng)用也越來越普遍。
辦公自動(dòng)化軟件中常用的數(shù)據(jù)庫系統(tǒng)Lotus Notes,屬于非關(guān)系數(shù)據(jù)庫管理系統(tǒng),具有以下特點(diǎn):
1. 基于文檔組織模式;
2. 使用非結(jié)構(gòu)化的數(shù)據(jù)元素;
3. 通過定時(shí)復(fù)制刷新數(shù)據(jù);
4. 使用視圖定位數(shù)據(jù);
5. 通過全文檢索訪問數(shù)據(jù)。
因?yàn)锳DO或ODBC的方法是針對(duì)Oracle等關(guān)系數(shù)據(jù)庫管理系統(tǒng)的,主要是通過SQL語言訪問數(shù)據(jù),Notes盡管也提供了Notes ODBC,但它并不支持全文檢索,因此要在VB中實(shí)現(xiàn)對(duì)Lotus Notes數(shù)據(jù)庫的存取,必須通過別的方法。
在Notes中使用COM和OLE
OLE是Windows的一個(gè)特征,OLE通過把應(yīng)用程序的功能作為對(duì)象暴露給
其他
應(yīng)用程序,這些對(duì)象擁有屬性(數(shù)據(jù))和方法(函數(shù)),應(yīng)用程序通過OLE中的對(duì)象去執(zhí)行相應(yīng)的任務(wù)。Domino既可以作為一個(gè)OLE提供給外部程序調(diào)用,也可以通過OLE去控制其他OLE對(duì)象。盡管OLE也有許多優(yōu)點(diǎn),但Domino的OLE服務(wù)不支持早期綁定,這意味著在VB等應(yīng)用程序中對(duì)OLE編程進(jìn)行類型檢查、快速啟動(dòng)時(shí),Domino OLE將強(qiáng)迫應(yīng)用程序啟動(dòng)Notes的客戶端,從而對(duì)系統(tǒng)產(chǎn)生巨大壓力。此外,應(yīng)用程序不能同時(shí)啟動(dòng)多個(gè)NotesSession,主要出于安全角度,Domino的OLE不允許應(yīng)用程序直接輸入用戶名和密碼,因此整個(gè)應(yīng)用程序要么頻繁地啟動(dòng)和關(guān)閉Domino OLE來打開NotesSession,要么大量使用全局變量,對(duì)程序設(shè)計(jì)極為不利。
在R5.03以后,Lotus提供了一個(gè)后臺(tái)的COM類NotesSession。NotesSession是一個(gè)功能強(qiáng)大的對(duì)象模型,它提供了其他Notes對(duì)象的接口,即只有通過它才能訪問Notes中的數(shù)據(jù)庫對(duì)象NotesDatabase、NotesView等對(duì)象。
由于COM與OLE的兼容性,因此,用VB等程序操作Domino就變得相當(dāng)容易,在VB中引用的方法非常簡(jiǎn)單,新建一個(gè)工程,在菜單“工程”下選擇“引用”,則會(huì)出現(xiàn)下列對(duì)話框:
新建工程時(shí)加入對(duì)Domino庫的引用
同時(shí)在Form上放一個(gè)FlexGrid控件,產(chǎn)生一個(gè)如圖2所示的窗體。 在窗體事件Load 中鍵入下列代碼:
窗口界面
Private Sub Form_Load()
Dim Session As New Domino.NotesSession
Dim PublicNotesDb As New Domino
.NotesDatabase
Dim View As NotesView
Dim C As NOTESVIEWCOLUMN
Dim Mycount As Integer
Session.Initialize
Set PublicNotesDb = session.GetDatabase(“教科文處/教科文”, “檔案管理.nsf”)
If PublicNotesDb Is Nothing Then
MsgBox (“不能打開Notes庫,請(qǐng)查看系統(tǒng)設(shè)置!”)
End If
Set View = PublicNotesDb.GetView(“Having AutoCode”)
With grdDataGrid
.Clear
j = 0
.Rows = 2
.FixedCols = 1
.FixedRows = 1
.Col = 1
.FixedRows = .Row
.Row = 0
.Cols = 2
j = 1
For Each C In View.Columns
.AddItem (C.Title)
x.Caption = C.Title
.Col = j
.Cols = .Col + 2
.Item(j).Visible = False
.Text = C.Title
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 = “處理責(zé)任人”
.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(“登記號(hào)”)(0)
.Col = 2
Str = Doc.GetItemValue(“組卷號(hào)”)(0)
.Text = Str
.Col = 3
.Text= Doc.GetItemValue(“文件字號(hào)”)(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
上面的代碼中,調(diào)用initialize方法產(chǎn)生一個(gè)NotesSession 對(duì)象,它的方法有點(diǎn)類似VBA中調(diào)用Word的方法,如果采用 IsOpen可以判斷是否已經(jīng)打開對(duì)話框,函數(shù)GetDatabase()打開Notes數(shù)據(jù)庫, 其中取得一個(gè)數(shù)據(jù)的函數(shù)用法有點(diǎn)特別:
.Text = Doc.GetItemValue(“登記號(hào)”)(0)
使用兩個(gè)連續(xù)的括號(hào)似乎Visual Basic不允許,其實(shí)Domino中允許多值域,所以函數(shù)GetItemValue()返回的實(shí)質(zhì)上是一個(gè)數(shù)組,第一個(gè)元素從0開始。
按鍵盤F5開始運(yùn)行,就可以看到輸出結(jié)果。
VB操作Domino COM的優(yōu)缺點(diǎn)
VB操作Domino COM具有以下優(yōu)點(diǎn):
● VB應(yīng)用程序不需要調(diào)用Lotus Notes客戶端就可以訪問Notes的函數(shù);
● 程序員可以在設(shè)計(jì)時(shí)使用早期綁定,其速度比晚綁定快,最主要的是可以利用VB6的智能語法提示功能;
● COM的運(yùn)行速度比Lotus Script快;
● 可以獨(dú)立于Lotus Notes客戶端進(jìn)行應(yīng)用程序分發(fā)。
遺憾的是Domino的COM與VBA等相比,還有一些明顯缺點(diǎn):
● 目前Lotus只支持后臺(tái)的Domino對(duì)象,即session,對(duì)于UIWorkSpace 并不支持(如果支持,就意味Lotus客戶端可以被用戶或第三方程序取代);
● 由于COM只被Windows所支持,目前Unix還不能使用本文所論述的方法;
● 由于安全原因,Louts目前不支持DCOM技術(shù);
● Lotus 提供的COM并不支持“ref”內(nèi)存指針,標(biāo)準(zhǔn)COM提供三種內(nèi)存指針:“ref”、“unique”和“ptr”,其中“ref”開銷最小。
結(jié) 論
采用COM作為VB與Domino的橋梁,既可以發(fā)揮Domino的強(qiáng)大的文檔處理能力,又可以發(fā)揮VB友好的可視化功能。文中例子是筆者實(shí)際工作中使用過的,該設(shè)計(jì)采用R5.05和VB6開發(fā)工具,在Win98、NT和Win2000下均工作正常。
相關(guān)文章
前一則:
淺談?dòng)肰B6.0編寫木馬程序
后一則:
再談VB程序的加密
本頁查看次數(shù):
公司公告
|
客戶調(diào)查
|
法律聲明
|
誠聘英才
|
給我們投稿
|
繁
閃
頭像
京ICP備05031245號(hào)
Copyright @ REDCOME.com ALL Rights Reserved
北京怡康軟件科技有限公司 地址:北京市昌平區(qū)東小口立湯路188號(hào)北方明珠大廈1號(hào)樓2708 郵編:102218 電話:84909966 傳真:84909900 QQ:335601661