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

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        VB設置Lotus Notes數據庫

        VB設置Lotus Notes數據庫

        更新時間:2022-05-13 文章作者:未知 信息來源:網絡 閱讀次數:

        概述

        今天,異構數據環境已經是一個普遍存在的問題,Windows常用開放數據庫互連標準ODBC進行數據交換與操作,后來微軟又推出了ADO技術,例如用VB操作Oracle、Sybase和SQL Server等,其應用也越來越普遍。

        辦公自動化軟件中常用的數據庫系統Lotus Notes,屬于非關系數據庫管理系統,具有以下特點:

        1. 基于文檔組織模式;

        2. 使用非結構化的數據元素;

        3. 通過定時復制刷新數據;

        4. 使用視圖定位數據;

        5. 通過全文檢索訪問數據。

        因為ADO或ODBC的方法是針對Oracle等關系數據庫管理系統的,主要是通過SQL語言訪問數據,Notes盡管也提供了Notes ODBC,但它并不支持全文檢索,因此要在VB中實現對Lotus Notes數據庫的存取,必須通過別的方法。

        在Notes中使用COM和OLE

        OLE是Windows的一個特征,OLE通過把應用程序的功能作為對象暴露給其他應用程序,這些對象擁有屬性(數據)和方法(函數),應用程序通過OLE中的對象去執行相應的任務。Domino既可以作為一個OLE提供給外部程序調用,也可以通過OLE去控制其他OLE對象。盡管OLE也有許多優點,但Domino的OLE服務不支持早期綁定,這意味著在VB等應用程序中對OLE編程進行類型檢查、快速啟動時,Domino OLE將強迫應用程序啟動Notes的客戶端,從而對系統產生巨大壓力。此外,應用程序不能同時啟動多個NotesSession,主要出于安全角度,Domino的OLE不允許應用程序直接輸入用戶名和密碼,因此整個應用程序要么頻繁地啟動和關閉Domino OLE來打開NotesSession,要么大量使用全局變量,對程序設計極為不利。

        在R5.03以后,Lotus提供了一個后臺的COM類NotesSession。NotesSession是一個功能強大的對象模型,它提供了其他Notes對象的接口,即只有通過它才能訪問Notes中的數據庫對象NotesDatabase、NotesView等對象。

        由于COM與OLE的兼容性,因此,用VB等程序操作Domino就變得相當容易,在VB中引用的方法非常簡單,新建一個工程,在菜單“工程”下選擇“引用”,則會出現下列對話框:


        圖1 新建工程時加入對Domino庫的引用

        同時在Form上放一個FlexGrid控件,產生一個如圖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庫,請查看系統設置!”)

        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 = “處理責任人”

        .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(“登記號”)(0)

        .Col = 2

        Str = Doc.GetItemValue(“組卷號”)(0)

        .Text = Str

        .Col = 3

        .Text= Doc.GetItemValue(“文件字號”)(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

        上面的代碼中,調用initialize方法產生一個NotesSession 對象,它的方法有點類似VBA中調用Word的方法,如果采用 IsOpen可以判斷是否已經打開對話框,函數GetDatabase()打開Notes數據庫, 其中取得一個數據的函數用法有點特別:

        .Text = Doc.GetItemValue(“登記號”)(0)

        使用兩個連續的括號似乎Visual Basic不允許,其實Domino中允許多值域,所以函數GetItemValue()返回的實質上是一個數組,第一個元素從0開始。

        按鍵盤F5開始運行,就可以看到輸出結果。

        VB操作Domino COM的優缺點

        VB操作Domino COM具有以下優點:

        ● VB應用程序不需要調用Lotus Notes客戶端就可以訪問Notes的函數;

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

        ● COM的運行速度比Lotus Script快;

        ● 可以獨立于Lotus Notes客戶端進行應用程序分發。

        遺憾的是Domino的COM與VBA等相比,還有一些明顯缺點:

        ● 目前Lotus只支持后臺的Domino對象,即session,對于UIWorkSpace 并不支持(如果支持,就意味Lotus客戶端可以被用戶或第三方程序取代);

        ● 由于COM只被Windows所支持,目前Unix還不能使用本文所論述的方法;

        ● 由于安全原因,Louts目前不支持DCOM技術;

        ● Lotus 提供的COM并不支持“ref”內存指針,標準COM提供三種內存指針:“ref”、“unique”和“ptr”,其中“ref”開銷最小。

        結 論

        采用COM作為VB與Domino的橋梁,既可以發揮Domino的強大的文檔處理能力,又可以發揮VB友好的可視化功能。文中例子是筆者實際工作中使用過的,該設計采用R5.05和VB6開發工具,在Win98、NT和Win2000下均工作正常。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲美日韩Av中文字幕无码久久久妻妇 | 特级av毛片免费观看| 日韩午夜免费视频| 亚洲AV综合永久无码精品天堂| 最近中文字幕mv免费高清电影| 欧洲 亚洲 国产图片综合| jjzz亚洲亚洲女人| 国产亚洲一区二区三区在线不卡| 日韩毛片一区视频免费| 亚洲精品成人网久久久久久| 国产高清对白在线观看免费91 | 永久免费无码日韩视频| 亚洲第一页综合图片自拍| 亚洲一级毛片视频| 免费福利电影在线观看| 成人免费视频试看120秒| 亚洲风情亚Aⅴ在线发布| 免费一级毛片一级毛片aa| 亚洲欧洲日韩在线电影| 拍拍拍无挡免费视频网站| 内射少妇36P亚洲区| 女人让男人免费桶爽30分钟| 亚洲美女中文字幕| 日韩成全视频观看免费观看高清| 五月天婷婷免费视频| 亚洲男人的天堂在线播放| 精品国产污污免费网站入口在线 | 青青草a免费线观a| 国产V亚洲V天堂无码久久久| 99免费在线观看视频| 亚洲人av高清无码| 亚洲午夜国产精品无码老牛影视| 最近免费中文字幕mv电影| 亚洲av综合av一区二区三区 | 毛片A级毛片免费播放| 免费看黄福利app导航看一下黄色录像| 亚洲人成伊人成综合网久久久| 嘿嘿嘿视频免费网站在线观看| 亚洲2022国产成人精品无码区| jizz免费一区二区三区| 久久精品亚洲中文字幕无码麻豆|