• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        VB設(shè)置Lotus Notes數(shù)據(jù)庫

        VB設(shè)置Lotus Notes數(shù)據(jù)庫

        更新時(shí)間:2022-05-13 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        概述

        今天,異構(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ì)話框:


        圖1 新建工程時(shí)加入對(duì)Domino庫的引用

        同時(shí)在Form上放一個(gè)FlexGrid控件,產(chǎn)生一個(gè)如圖2所示的窗體。 在窗體事件Load 中鍵入下列代碼:


        圖2 窗口界面

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

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲av鲁丝一区二区三区| 日本免费福利视频| 杨幂最新免费特级毛片| 成人免费看黄20分钟| 亚洲综合色区中文字幕| 人妻视频一区二区三区免费| 亚洲字幕在线观看| 免费人成又黄又爽的视频在线电影| 成人毛片18岁女人毛片免费看| 亚洲二区在线视频| 免费理论片51人人看电影| 国产亚洲A∨片在线观看| a级毛片在线免费看| 亚洲成a人片在线观看无码| 亚洲精品V天堂中文字幕| 国产成人免费A在线视频| 男女啪啪免费体验区| 亚洲伊人色欲综合网| 最近中文字幕完整版免费高清| 亚洲免费一级视频| 国产精品免费视频一区| a级毛片免费高清视频| 日本一道一区二区免费看| 337P日本欧洲亚洲大胆艺术图| 免费精品国产自产拍在线观看图片| 国产亚洲综合久久系列| 日韩视频在线观看免费| 国产成人精品日本亚洲网址| 国产成人免费手机在线观看视频 | 成人亚洲性情网站WWW在线观看| 免费无码又爽又刺激网站| 亚洲精品第五页中文字幕| 人人揉揉香蕉大免费不卡| 亚洲乱码一二三四区麻豆| 国产精品国产自线拍免费软件| 日本精品久久久久久久久免费| 精品久久香蕉国产线看观看亚洲| 狼群影院在线观看免费观看直播| 亚洲AV无码一区二区一二区| 国产国拍亚洲精品福利| 精品久久久久久国产免费了|