函数定义
/* 函数名称 f_odbc_autoreg
函数功能 将拷贝到winsystem32 下的数据库进行注册
函数参数:mydb_name 将注册数据库名称:
适用范围pb9.0 sqlanywhere9.0 数据库
实用注意事项:需将sqlanywhere9.0支持驱动 安装到系统目录
存在问题:运行后pb9.0 不能生成新的数据库,有待解决
2006 - 11 已解决 设置参数大小写问题.*/
constant long lensize=260
string str
str=Space(lensize)
GetSystemDirectory(str,lensize)
/自动设置odbc
int answer1,answer2,answer3,answer4,answer5,answer6,answer7,answer8,answer9,ing1,ing2,ing3,ing4,tag1,tag2,tag3
string ls_driver,ls_trans,app_path,db_path,db_start,ins1,ins2,ins3,ins4,tags1,tags2,tags3
app_path = str
SET ODBC/ODBCIST.INI/ODBC DRVIER
ls_driver=app_path+'/DBODBC9.DLL'
Ls_trans=app_path+'/DBODTR9.DLL'
tag1 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers','Adaptive Server Anywhere 9.0',RegString!,tags1)
if tag1 = - 1 then
answer1=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers','Adaptive Server Anywhere 9.0',RegString!,'Installed')
end if
if answer1=-1 then
return -1
end if
ing1 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Driver',RegString!,ins1)
ing2 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Setup',RegString!,ins2)
if ing1= -1 or ing2= -1 then
answer2=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Driver',RegString!,ls_driver)
answer3=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Setup',RegString!,ls_driver)
if answer2=-1 or answer3=-1 then
return -1
end if
end if
///以上部分没有数据库数据
tag3 = RegistryGet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/ODBC data Sources',&
mydb_name,RegString!,tags3)
if tag3 = -1 then
answer4=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/ODBC data Sources',&
mydb_name,RegString!,'Adaptive Server Anywhere 9.0')
end if
if answer4=-1 then
return -1
end if
db_path=app_path+'/'+mydb_name+'.db'
db_start=app_path+'/dbeng9.exe -c9m'
answer1=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'autostop',RegString!,'yes')
answer2=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'DatabaseFile',RegString!,db_path)
answer3=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'DatabaseName',RegString!,mydb_name)
answer4=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'driver',RegString!,ls_driver)
answer5=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'Integrated',RegString!,'No')
answer6=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'PWD',RegString!,'SQL')
answer7=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'start',RegString!,db_start)
answer8=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'UID',RegString!,'DBA')
answer9=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'AutoStop',RegString!,'Yes')
if answer1=-1 or answer2=-1 or answer3=-1 or answer4=-1 or answer5=-1 or answer6=-1 or answer7=-1 or answer8=-1 then
return -1
end if
return 1
以下写在应用的open事件
///自动注册数据库
string mydb
mydb = "tytank"
f_db_autoreg(mydb)
/数据库联结
// Profile Tank3
// Profile tytank
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=tytank;UID=;PWD='"
//数据库相应驱动程序拷贝到系统目录下
/* 函数名称 f_odbc_autoreg
函数功能 将拷贝到winsystem32 下的数据库进行注册
函数参数:mydb_name 将注册数据库名称:
适用范围pb9.0 sqlanywhere9.0 数据库
实用注意事项:需将sqlanywhere9.0支持驱动 安装到系统目录
存在问题:运行后pb9.0 不能生成新的数据库,有待解决
2006 - 11 已解决 设置参数大小写问题.*/
constant long lensize=260
string str
str=Space(lensize)
GetSystemDirectory(str,lensize)
/自动设置odbc
int answer1,answer2,answer3,answer4,answer5,answer6,answer7,answer8,answer9,ing1,ing2,ing3,ing4,tag1,tag2,tag3
string ls_driver,ls_trans,app_path,db_path,db_start,ins1,ins2,ins3,ins4,tags1,tags2,tags3
app_path = str
SET ODBC/ODBCIST.INI/ODBC DRVIER
ls_driver=app_path+'/DBODBC9.DLL'
Ls_trans=app_path+'/DBODTR9.DLL'
tag1 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers','Adaptive Server Anywhere 9.0',RegString!,tags1)
if tag1 = - 1 then
answer1=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers','Adaptive Server Anywhere 9.0',RegString!,'Installed')
end if
if answer1=-1 then
return -1
end if
ing1 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Driver',RegString!,ins1)
ing2 = RegistryGet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Setup',RegString!,ins2)
if ing1= -1 or ing2= -1 then
answer2=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Driver',RegString!,ls_driver)
answer3=RegistrySet('HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Adaptive Server Anywhere 9.0','Setup',RegString!,ls_driver)
if answer2=-1 or answer3=-1 then
return -1
end if
end if
///以上部分没有数据库数据
tag3 = RegistryGet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/ODBC data Sources',&
mydb_name,RegString!,tags3)
if tag3 = -1 then
answer4=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/ODBC data Sources',&
mydb_name,RegString!,'Adaptive Server Anywhere 9.0')
end if
if answer4=-1 then
return -1
end if
db_path=app_path+'/'+mydb_name+'.db'
db_start=app_path+'/dbeng9.exe -c9m'
answer1=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'autostop',RegString!,'yes')
answer2=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'DatabaseFile',RegString!,db_path)
answer3=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'DatabaseName',RegString!,mydb_name)
answer4=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'driver',RegString!,ls_driver)
answer5=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'Integrated',RegString!,'No')
answer6=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'PWD',RegString!,'SQL')
answer7=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'start',RegString!,db_start)
answer8=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'UID',RegString!,'DBA')
answer9=RegistrySet('HKEY_CURRENT_USER/SOFTWARE/ODBC/ODBC.INI/'+mydb_name,'AutoStop',RegString!,'Yes')
if answer1=-1 or answer2=-1 or answer3=-1 or answer4=-1 or answer5=-1 or answer6=-1 or answer7=-1 or answer8=-1 then
return -1
end if
return 1
以下写在应用的open事件
///自动注册数据库
string mydb
mydb = "tytank"
f_db_autoreg(mydb)
/数据库联结
// Profile Tank3
// Profile tytank
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=tytank;UID=;PWD='"
//数据库相应驱动程序拷贝到系统目录下