在一次用数据库画板连接Access的时候,没有设置任何的参数,结果弹出了一个选择数据源的框,我选择了一个DSN文件,结果连接成功了。以前一直不知道怎么用DSN文件来连接数据库,在琢磨之后,发现了下面的方法。
//==============================================================================
// RW 06.11.23 测试直接连接ODBC数据源,
// 一般连接需要注册数据源,无意中发现PB能直接用*.DSN文件来直接连接
//再尝试用后,发现用下面的方法可以连接到想要的数据源
//新建一个*.dsn文件,把里面的参数放到ConnectString参数中就可以直接连接了
//下面是例子
//==============================================================================
//事务对象
Transaction trs_conn
trs_conn = CREATE Transaction
//事务对象参数设置,注意其中的DBParm中的ConnectString来自*.dsn中
//ConnectString的连接参数为:(F1出来的)
//ConnectString = 'DSN = data_source_name; {UID = user_ID;PWD = password; driver_specific_parameters}'
//用*.dsn中的内容来填充driver_specific_parameters参数,其他省去。
trs_conn.DBMS = "ODBC"
trs_conn.AutoCommit=FALSE
trs_conn.DBParm = "ConnectString= '" +&
"DRIVER=Driver do Microsoft Access (*.mdb); " +&
"UID=admin; " +&
"UserCommitSync=Yes; " +&
"Threads=3; " +&
"SafeTransactions=0; " +&
"PageTimeout=5; " +&
"MaxScanRows=8; " +&
"MaxBufferSize=2048; " +&
"FIL=MS Access; " +&
"DriverId=25; " +&
"DBQ=//Showtime/city/fax1.mdb; '"
// "DBQ=E:/testodbc.mdb; '"
//.......................
//其他的具体参数
//.......................
//连接数据库
CONNECT USING trs_conn ;
IF trs_conn.SQLCode = 0 THEN
// MessageBox("","连接成功")
//检索数据试试
DataStore ds_test
String ls_syntax,ls_sql,ls_style,ls_err
// ls_sql = "Select * from table11"
ls_sql = "Select * from mdb"
ls_style = "style(type=grid)"
//创建DataWIndow(DataStore)的源代码
ls_syntax = trs_conn.SyntaxFromSQL(ls_sql,ls_style,ls_err)
IF Len(ls_err) > 0 THEN
MessageBox("Error","创建DataStore源代码失败:" + ls_err)
ELSE
//用DataStore来连接,并读取数据
ds_test = CREATE DataStore
ds_test.Create(ls_syntax,ls_err)
IF Len(ls_err) > 0 THEN
MessageBox("Error","创建DataStore出错:" + ls_err)
ELSE
ds_test.SetTransObject(trs_conn)
ds_test.Retrieve()
//...........
END IF
DESTROY ds_test
//用DataWindow来连接,并读取数据
dw_1.Create(ls_syntax,ls_err)
IF Len(ls_err) > 0 THEN
MessageBox("Error","创建DataWindow出错:" + ls_err)
ELSE
dw_1.SetTransObject(trs_conn)
dw_1.Retrieve()
//.........
END IF
//
END IF
ELSE
MessageBox("",trs_conn.SQLErrText)
END IF
//关闭连接
DISCONNECT USING trs_conn ;
DESTROY trs_conn
经过测试,发现可以连接数据库,也可以连接到其他机子上的数据库。但是,再用Access的时候,远程的Access数据库需要共享出来,而且可以要可以修改的登录权限。
只测试了Access,其他的没有测试,不知道是否可行