在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
"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结果处理对象
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命令
‘如果有错误,就显示错误信息
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
‘定位第一条记录
‘获得表单的记录数
Call result.FirstRow
‘定位第一条记录
Do
aa = result.GetValue("Table_Char")
bb = result.GetValue("Table_Int")
Print aa,bb
‘将返回的值,打印显示
aa = result.GetValue("Table_Char")
bb = result.GetValue("Table_Int")
Print aa,bb
‘将返回的值,打印显示
Call result.NextRow
‘继续下一条记录
Loop While maxrow > result.CurrentRow
‘如果搜索到最后条记录,退出循环
‘继续下一条记录
Loop While maxrow > result.CurrentRow
‘如果搜索到最后条记录,退出循环
result.Close(DB_CLOSE)
con.Disconnect
Exit Sub
errorHandler:
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Exit Sub
End Sub
con.Disconnect
Exit Sub
errorHandler:
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Exit Sub
End Sub
四、利用Script写入数据库
使用LotusScript访问数据库的完整函数:
本函数仅加入了一条记录,你可以使用循环,将Notes数据库中的值加入到ODBC中。
Sub Click(Source As Button)
Dim con As New ODBCConnection
‘定义ODBC连接对象
Dim qry As New ODBCQuery
‘定义ODBC执行对象
Dim result As New ODBCResultSet
‘定义ODBC结果处理对象
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命令
‘如果有错误,就显示错误信息
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命令
result.AddRow
‘增加一行记录
Call result.SetValue("Table_Char","cc")
Call result.SetValue("Table_Int",3)
result.UpdateRow
‘将增加的记录更新到数据库文件中
‘增加一行记录
Call result.SetValue("Table_Char","cc")
Call result.SetValue("Table_Int",3)
result.UpdateRow
‘将增加的记录更新到数据库文件中
result.Close(DB_CLOSE)
con.Disconnect
‘关闭数据库,断开连接
Exit Sub
errorHandler:
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Exit Sub
End Sub
con.Disconnect
‘关闭数据库,断开连接
Exit Sub
errorHandler:
Messagebox result.GetExtendedErrorMessage,, result.GetErrorMessage
Exit Sub
End Sub
五、Notes数据库和关系数据库的区别
关系数据库
|
NOTES数据库
|
DBF数据库
|
数据库文件
|
NSF数据库文件
|
文件目录
|
表单
|
视图
|
DBF文件
|
记录
|
文档
|
记录
|
字段
|
列值
|
字段
|
转载于:https://blog.51cto.com/wheny/542088