天天看點

讀寫關系資料庫資料

在Notes資料庫中,可以通過公式函數和Script讀寫其他關系資料庫資料,本文就是舉例講解如何通過程式讀寫關系資料庫,為了友善,以通過ODBC通路TXT檔案資料庫格式舉例。

一、設定ODBC資料源

Notes是通過ODBC資料源來通路關系資料庫,但其他特殊資料庫,如DB2,ORACLE等,有特殊的形式,不再此處解釋。

1、在作業系統的控制台中,打開“ODBC資料源”。

2、在“使用者DSN”中單擊“添加”,增加一個新的資料源。

3、選擇資料源的驅動程式,本例選擇“Microsoft Text Driver(*.txt,*.csv)”,單擊“完成”。

4、在“ODBC文本安裝中”輸入:

· 資料源名稱:此名稱将是Notes通路ODBC資料庫的識别名稱,區分大小寫,本例使用“TESTXT”。

· 描述:解釋說明,可以預設

· 目錄:指定資料庫的表機關置。本例為“c:txt”

· 注:真正的資料庫檔案應該是一個包括若幹表單的檔案資料資料庫,如*.nsf資料庫檔案,而*.TXT,*.DBF等檔案不能叫資料庫,隻能是屬于資料庫中的一個表單。是以需要指定其檔案所屬的資料庫檔案,即目錄位址,表示此目錄下的所有*.txt檔案都屬于此資料庫中的表單。

5、在定義格式中,需要指定*.txt檔案字段之間的分隔符,此例為"Tab"

6、在指定*.txt表單的字段名稱,本例為:

· Field_Char:字元類型,10位

· Fidle_Int:整數類型

7、全部完成後,在“使用者DSN”中可以看到“TESTXT”,表示ODBC資料庫設定完成。

8、在“c:txt”目錄中建立一個"abc.txt"檔案,需要使用英文檔案名稱,數字有些問題,内容為

"aa"    1(用TAB分隔)

"bb"    2

二、利用Notes函數通路資料庫

1、@DbColumn:檢索指定的DBMS、表和列,并傳回該列的所有值。

本例傳回所有記錄中的字段Table_Char的值:

@DbColumn("ODBC" : "NoCache" ; "TESTXT" ; "";"";"ABC.TXT" ;"Table_Char" )

傳回"aa":"bb"

2、@DbLookup:檢索指定的 DBMS,表和列,并對那些關鍵字列的值和指定的關鍵字比對的記錄傳回該列的值。

    本例搜尋字段Table_Char = "aa"的記錄,并傳回其字段Table_Int的值:

    @DbLookup("ODBC":"NoCache";"TESTXT";"";"";"ABC.TXT";"Table_Int";"";"Table_Char";"aa")

    傳回:1

說明:這兩條公式函數都能傳回資料庫,可以在域初始值的計算公式中使用,建議最好使用LotusScript來代替這兩個函數,因為這兩個函數對通路錯誤比較難捕獲和處理。

三、利用Script讀取資料庫

使用LotusScript通路資料庫的完整函數:

注意:使用LotusScript通路資料庫一定要在(Options)中加入Uselsx "*LSXODBC"指令

Sub Click(Source As Button)                

    Dim con As New ODBCConnection

‘定義ODBC連接配接對象

    Dim qry As New ODBCQuery

‘定義ODBC執行對象

    Dim result As New ODBCResultSet

‘定義ODBC結果處理對象

    On Error Goto errorHandler

‘如果有錯誤,就顯示錯誤資訊

    Set qry.Connection = con

    Set result.Query = qry

    con.ConnectTo("TXTEST")

‘激活連接配接TESTXT資料庫

    qry.SQL = "SELECT Table_Chat,Table_Int FROM ABC.TXT"

‘決定對表單的“ABC.TXT”的字段Table_Char,Table_Int進行處理

    result.Execute 

‘執行SQL指令

    maxrow = result.MaxRows

‘獲得表單的記錄數

    Call result.FirstRow

‘定位第一條記錄

    Do

        aa = result.GetValue("Table_Char")

        bb = result.GetValue("Table_Int")

        Print aa,bb

‘将傳回的值,列印顯示

        Call result.NextRow

‘繼續下一條記錄

    Loop While maxrow > result.CurrentRow

‘如果搜尋到最後條記錄,退出循環

    result.Close(DB_CLOSE)

    con.Disconnect

Exit Sub

errorHandler:

    Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage

    Exit Sub

End Sub

四、利用Script寫入資料庫

本函數僅加入了一條記錄,你可以使用循環,将Notes資料庫中的值加入到ODBC中。

    result.AddRow

‘增加一行記錄

    Call result.SetValue("Table_Char","cc")

    Call result.SetValue("Table_Int",3)

    result.UpdateRow

‘将增加的記錄更新到資料庫檔案中

‘關閉資料庫,斷開連接配接

五、Notes資料庫和關系資料庫的差別

關系資料庫 NOTES資料庫 DBF資料庫
資料庫檔案 NSF資料庫檔案 檔案目錄
表單 視圖 DBF檔案
記錄 文檔
字段 列值