国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VB操作LotusNotes數(shù)據(jù)庫

2019-11-18 17:53:32
字體:
供稿:網(wǎng)友
今天,異構(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和SQLServer等,其應(yīng)用也越來越普遍。

辦公自動(dòng)化軟件中常用的數(shù)據(jù)庫系統(tǒng)LotusNotes,屬于非關(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盡管也提供了NotesODBC,但它并不支持全文檢索,因此要在VB中實(shí)現(xiàn)對(duì)LotusNotes數(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í),DominoOLE將強(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)閉DominoOLE來打開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中鍵入下列代碼:


窗口界面

PRivateSubForm_Load()

DimSessionAsNewDomino.NotesSession

DimPublicNotesDbAsNewDomino

.NotesDatabase

DimViewAsNotesView

DimCAsNOTESVIEWCOLUMN

DimMycountAsInteger

Session.Initialize

SetPublicNotesDb=session.GetDatabase(“教科文處/教科文”,“檔案管理.nsf”)

IfPublicNotesDbIsNothingThen

MsgBox(“不能打開Notes庫,請(qǐng)查看系統(tǒng)設(shè)置!”)

EndIf

SetView=PublicNotesDb.GetView(“HavingAutoCode”)

WithgrdDataGrid

.Clear

j=0

.Rows=2

.FixedCols=1

.FixedRows=1

.Col=1

.FixedRows=.Row

.Row=0

.Cols=2

j=1

ForEachCInView.Columns

.AddItem(C.Title)

x.Caption=C.Title

.Col=j

.Cols=.Col 2

.Item(j).Visible=False

.Text=C.Title

IfC.IsHidden=TrueThen

.ColWidth(j)=0

EndIf

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

DimDocAsObjectNOTESDOCUMENT

SetDoc=View.GetFirstDocument

.Row=1

j=1

DimStrAsString

DoUntilDocIsNothing

.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)

SetDoc=View.GetNextDocument(Doc)

IfNotDocIsNothingThen

Ifj>=.RowsThen

.Rows=j 1

EndIf

.Row=j;j=j 1

EndIf

Loop

.MergeCells=flexMergeRestrictColumns

'MergeCells=2

.MergeCol(0)=True

.MergeCol(1)=True

.MergeCol(2)=True

.MergeCol(3)=True

.Redraw=True

EndWith

EndSub

上面的代碼中,調(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)似乎VisualBasic不允許,其實(shí)Domino中允許多值域,所以函數(shù)GetItemValue()返回的實(shí)質(zhì)上是一個(gè)數(shù)組,第一個(gè)元素從0開始。

按鍵盤F5開始運(yùn)行,就可以看到輸出結(jié)果。

VB操作DominoCOM的優(yōu)缺點(diǎn)

VB操作DominoCOM具有以下優(yōu)點(diǎn):

●VB應(yīng)用程序不需要調(diào)用LotusNotes客戶端就可以訪問Notes的函數(shù);

●程序員可以在設(shè)計(jì)時(shí)使用早期綁定,其速度比晚綁定快,最主要的是可以利用VB6的智能語法提示功能;

●COM的運(yùn)行速度比LotusScript快;

●可以獨(dú)立于LotusNotes客戶端進(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下均工作正常。->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 枣庄市| 德令哈市| 营口市| 中山市| 甘南县| 吕梁市| 屏东市| 古田县| 特克斯县| 临清市| 青河县| 泗阳县| 莱芜市| 贡嘎县| 柯坪县| 若尔盖县| 苏尼特左旗| 二手房| 石河子市| 荔波县| 石阡县| 枣庄市| 阳山县| 和静县| 凤山市| 读书| 福清市| 平武县| 同仁县| 海淀区| 安多县| 高雄市| 泽普县| 平阴县| 涿州市| 孝义市| 宿松县| 丽水市| 轮台县| 鹰潭市| 秭归县|