在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檔案 |
記錄 | 文檔 | |
字段 | 列值 |