设置ODBC问题!(我真的解决不了!!)求救!!!!

yahooyzy 2003-08-30 05:39:53
设置完成后提示ODBC! DBMS ODBC is not supported in your current installation!!!!!


我的用语句配置如下:
string ls_directory,startupfile
startupfile='change.ini'
ls_directory=ProfileString (startupfile, "online", "path", "")

RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive Server Anywhere 7.0",RegString!, "Installed")
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 7.0","Driver",RegString!, ls_directory + "win32\dbodbc7.dll")
Registryset("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 7.0","Setup",RegString!, ls_directory + "win32\dbodbc7.dll")

RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", "deposit", RegString!, "Adaptive Server Anywhere 7.0")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit", "DataBaseFile", RegString!, ls_directory + "deposit.db")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit", "DataBaseName", RegString!, "deposit")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit", "Driver", RegString!, ls_directory + "win32\dbodbc7.dll")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit", "PWD", RegString!, "sql")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit", "Start", RegString!, ls_directory + "win32\dbeng7.exe -c 8m")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit", "UID", RegString!, "dba")
...全文
308 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
纳米茶 2003-09-01
  • 打赏
  • 举报
回复
我用的就是2000,怎么会出问题呢。我这段代码是针对裸机,就是说没有安装过sqlanywhere的机器,都可以运行的。
yahooyzy 2003-09-01
  • 打赏
  • 举报
回复
jerrymao(加菲猫) :
我用你的代码试了一下,只有装win98的机器是可以的,而装win2000的机器都不行呀!!!!请帮忙解决一下!!!万分感谢!!!!
netspies 2003-09-01
  • 打赏
  • 举报
回复


请大家看看下面问题

http://expert.csdn.net/Expert/topic/2198/2198945.xml?temp=.6973535
netspies 2003-09-01
  • 打赏
  • 举报
回复
直接看注册表



请大家看看下面问题

http://expert.csdn.net/Expert/topic/2198/2198945.xml?temp=.6973535
rogery 2003-09-01
  • 打赏
  • 举报
回复
用debug调试一下,取出变量值
纳米茶 2003-09-01
  • 打赏
  • 举报
回复
绝对可以用的代码!前天才写的!略微进行了一些修改。你要先删掉你自己的odbc定义
//////////
String ls_value
string ls_subkeylist[]
String ls_regkey
//////////
RegistryGet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit","Driver",RegString!,ls_value)
if f_str_isnull(ls_value)=false then////已经配置
//////////从注册表中读入配置,连接数据库实例
sqlca.dbms = 'ODBC'
sqlca.autocommit = false
sqlca.dbparm = "ConnectString='DSN=deposit;UID=dba;PWD=sql'"
connect using sqlexp;
else//////////ODBC数据源没有配置
//////////配置ODBCINST
ls_regkey = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"
RegistryGet(ls_regkey,"Adaptive Server Anywhere 8.0",RegString!,ls_value)
if f_str_isnull(ls_value) then
RegistrySet(ls_regkey,"Adaptive Server Anywhere 8.0",RegString!,"Installed")
ls_regkey = "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0"
RegistrySet(ls_regkey,"Driver",RegString!,gs_path +"win32\dbodbc8.dll")
RegistrySet(ls_regkey,"Setup",RegString!,gs_path +"win32\\dbodbc8.dll")
end if
////配置实例ODBC
ls_regkey = "HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
RegistrySet(ls_regkey,"deposit",RegString!,"Adaptive Server Anywhere 8.0")
//////////注册HKEY_CURRENT_USER\
ls_regkey = "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\deposit"
RegistrySet(ls_regkey,"AutoStop",RegString!,'Yes')
RegistrySet(ls_regkey,"DatabaseFile",RegString!,gs_path +'deposit.db')
RegistrySet(ls_regkey,"Description",RegString!,'Oracle数据库定时备份参数库')
RegistrySet(ls_regkey,"Driver",RegString!,gs_path +"win32\dbodbc8.dll")
RegistrySet(ls_regkey,"Integrated",RegString!,'No')
RegistrySet(ls_regkey,"Start",RegString!,gs_path + 'win32\dbeng8.exe -Q -c 8m')
//////////
ls_regkey = "HKEY_USERS"
RegistryKeys(ls_regkey,ls_subkeylist)
ls_regkey = ls_regkey + ls_subkeylist[2]
RegistrySet(ls_regkey+"\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources","deposit",RegString!,"Adaptive Server Anywhere 8.0")
ls_regkey = "HKEY_USERS\" + ls_subkeylist[2]+"\SOFTWARE\ODBC\ODBC.INI\deposit"
RegistrySet(ls_regkey,"AutoStop",RegString!,'Yes')
RegistrySet(ls_regkey,"DatabaseFile",RegString!,gs_path +'deposit.db')
RegistrySet(ls_regkey,"Description",RegString!,'Oracle数据库定时备份参数库')
RegistrySet(ls_regkey,"Driver",RegString!,gs_path +"win32\dbodbc8.dll")
RegistrySet(ls_regkey,"Integrated",RegString!,'No')
RegistrySet(ls_regkey,"Start",RegString!,gs_path + 'win32\dbeng8.exe -Q -c 8m')
//////////完成配置
sqlca.dbms = 'ODBC'
sqlca.autocommit = false
sqlca.dbparm = "ConnectString='DSN=deposit;UID=dba;PWD=sql'"
connect using sqlca;
end if
////判断数据库是否连接失败
if sqlca.sqlcode <> 0 then
MessageBox ('提示信息','不能连接定时备份参数库!~r~n错误原因为'+sqlca.SQLErrText,StopSign!)
HALT
end if
chrisfy 2003-09-01
  • 打赏
  • 举报
回复
如果在你的配置语句下没加入如下代码,就会出现你描述的提示
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=deposit;UID=dba;PWD=sql'"
jdsnhan 2003-09-01
  • 打赏
  • 举报
回复
你注册的时候,是ls_directory + "win32\dbodbc7.dll"
带入参数,ls_directory=C:\deposit\
即注册 c:\deposit\win32\dbodbc7.dll
真的有这个路径吗?
这样能注册成功吗?
如果先手工配置,没问题的话,我觉得还是注册的问题。
yahooyzy 2003-09-01
  • 打赏
  • 举报
回复
还是不行呀!程序要下发,就等着解决了!
yahooyzy 2003-09-01
  • 打赏
  • 举报
回复
找出问题了,少了一个pbodb80.dll文件,不好意思了,谢谢大家!
xingxing 2003-08-31
  • 打赏
  • 举报
回复
仔细跟踪以下自己的程序吧
yahooyzy 2003-08-31
  • 打赏
  • 举报
回复
ls_directory=C:\deposit\
我设的没错呀!!!我从注册表里看都没问题!而且从odbc数据源中测试数据库联接也没问题!
纳米茶 2003-08-31
  • 打赏
  • 举报
回复
知道是怎么回事了。你没有配置当前用户的odbc信息,也就是HKEY_USER下面的DEFAULT下面的一个用户的odbc信息。
代码给你参考:
ls_regkey = "HKEY_USERS"
RegistryKeys(ls_regkey,ls_subkeylist)
ls_regkey = ls_regkey + ls_subkeylist[2]
RegistrySet(ls_regkey+"\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources","deposit",RegString!,"Adaptive Server Anywhere 8.0")
ls_regkey = "HKEY_USERS\" + ls_subkeylist[2]+"\SOFTWARE\ODBC\ODBC.INI\deposit"
RegistrySet(ls_regkey,"AutoStop",RegString!,'Yes')
RegistrySet(ls_regkey,"DatabaseFile",RegString!,gs_path +deposit.db')
RegistrySet(ls_regkey,"Description",RegString!,'')
RegistrySet(ls_regkey,"Driver",RegString!,gs_path +"Share\dbodbc8.dll")
RegistrySet(ls_regkey,"Integrated",RegString!,'No')
RegistrySet(ls_regkey,"Start",RegString!,gs_path + 'Share\dbeng8.exe -Q -c 8m')
thelazyman 2003-08-31
  • 打赏
  • 举报
回复
你可以先手动配置好odbc,看能否连接得上!
然后再用代码配置,这样也好调试,比较!
jdsnhan 2003-08-30
  • 打赏
  • 举报
回复
读出来ls_directory看看
thelazyman 2003-08-30
  • 打赏
  • 举报
回复
同意楼上的
出错原因是没有配置好odbc驱动!
你也可以把dbodbc7.dll,dbeng7.exe拷贝到当前目录下,使用函数获得当前目录!
这样灵活性更好,也不容易出错或路径不对!!
纳米茶 2003-08-30
  • 打赏
  • 举报
回复
你的ls_directory的值好像少了一个 \ 符号,如果你在ini文件中设置的仅仅是例如:
path = c:\deposit

这就会错误,因为没有找到dbeng的路径。所以应该设置为
path=c:\deposit\

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧