有问题的话请联系我daryl715@etang.com
在应用对象autoregister的open事件中编写下述脚本
ulong ul_num // 定义程序所需变量
int answer, answer1, answer2, answer3, answer4, answer5, answer6 &
answer7,ansapp // 定义程序所需变量
string ls_drivers,ls_start,ls_apppath,db_path,db_name,odbcstr,ds_name &
ls_location // 定义程序所需变量
// 设置Adaptive Server AnyWhere 7.0 的驱动程序路径,此处为PowerBuilder 8.0
// 的默认安装路径,需根据具体情况进行配置。
ls_location="C:\Program Files\Sybase\SQL Anywhere 7\win32\"
// 判断Adaptive Server AnyWhere 7.0 的驱动程序是否安装正确
ls_drivers=ls_location+"dbodbc7.dll"
ls_start=ls_location+"dbeng7.exe"
if not (fileExists(ls_drivers) and fileExists(ls_start)) then
messagebox("错误!","系统中没有安装Adaptive Server AnyWhere 7.0"+&
"的驱动程序,系统将中止运行!",StopSign!)
return
end if
// 设置ODBC\ODBCINST.INI\ODBC DRIVERS
answer=Registryset("HKEY_LOCAL_MACHINE\software\ODBC\ODBCINST.INI"+&
+"\ODBC Drivers","adaptive server anywhere 7.0",Regstring!,+&
"Installed")
if answer=-1 then
messagebox("错误!","应用程序无法设置ODBC\ODBCINST.INI\ODBC Drivers"+&
",系统将中止运行!",Information!)
return
end if
// 设置ODBC\ODBCINST.INI
answer1=registryset("HKEY_LOCAL_MACHINE\software\ODBC\ODBCinst."+"ini\+&
"adaptive server anywhere 7.0","CPtimeout",regstring!,"not pooled")
answer2=registryset("HKEY_LOCAL_MACHINE\software\ODBC\ODBCinst."+"ini\+&
"adaptive server anywhere 7.0","driver",regstring!,"ls_driver")
answer3=registryset("HKEY_LOCAL_MACHINE\software\ODBC\ODBCinst."+"ini\+&
"adaptive server anywhere 7.0","setup",regstring!,"ls_driver")
if answer1=-1 or answer2=-1 or answer3=-1 then
messagebox("错误!", "应用程序无法设置ODBC\ODBCINST.INI,系统将终止+&
"运行!",Information!) // 程序不执行
return
end if
// 这是数据库文件路径以及文件名,建议使用getcurrentdirectory()函数,设置相// 对路径
db_path=getcurrentdirectory()+"\test.db"
// 设置数据库名称
db_name="test"
// 设置ODBC数据源名称
ds_name="test"
// 设置ODBC DATA SOURCE名称
answer=Registryset("HKEY_LOCAL_MACHINE\software\ODBC\ODBC.INI"+&
"\ODBC Data Source",ds_name,Regstring!, "adaptive server+&
"anywhere 7.0")
if answer=-1 then
messagebox("错误!","应用程序无法设置ODBC DATA SOURCE名称"+&
",系统将中止运行!",Information!) // 程序不执行
return
end if
// 设置ODBC.ini细节
answer1=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&me,"driver",regstring!,ls_drivers)
answer2=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&me,"start",regstring!,ls_start)
answer3=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&me,"autostop",regstring!,"yes")
answer4=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&me,"databasefile",regstring!,db_path)
answer5=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&
me,"databasename",regstring!,db_name)
answer6=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&me,"pwd",regstring!,"sql")
answer7=registryset("HKEY_current_User\software\odbc\odbc.ini\"+ds_na+&me,"uid",regstring!,"dba")
if answer1=-1 or answer2=-1 or answer3 =-1 or answer4 =-1 or answer5 =-1 +&
or answer6=-1 or answer7=-1 then
messagebox("错误","应用程序无法设置ODBC.ini细节,系统将中止运+&
"行!",Information!)
return
end if
// 连接数据库
odbcstr='dsn='+db_name+';databasename='+db_name+';databasefile='+db_path
SQLCA.DBMS = "ODBC"
SQLCA.database=db_name
SQLCA.DBParm = "Connectstring='"+odbcstr+";uid=dba;pwd=sql'"
connect using sqlca;
if sqlca.sqlcode=-1 then
messagebox("连接数据库失败","出错原因: "+sqlca.sqlerrtext)
else
messagebox("连接数据库成功","建立ODBC数据源及连接数据库成功")
end if
open(w_main) // 打开应用程序主窗口