导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

又是脱离安装环境的问题,各位大哥看一下 !!!!

kciv 2003-12-16 10:15:32
我用pb9 + asa 8.0

我把我的数据库程序放到了目标机器上运行,在运行的时候,弹出了Database transaction information not available,Call setTrans or SetTransObject function.
我在我开发的那台机器上不会出现这样的问题啊.
还有,在目标的机器上如何不安装asa 就可以运行我的数据库啊.
如果要配置ODBC 数据源,在目标机器上上没有asa 的驱动程序啊?
如何安装这个驱动程序呢??我在我的目标机器上没有asa的驱动程序啊.请赐教! 多谢!!!!!!
...全文
64 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
banalman 2003-12-17

一般ASA8.0 需要下列库(您可以在应用程序路径下面建立一个ASA目录来存储)
PBAEN80.TLB
func.h.bak
MSVCRT40.DLL
LIBJCC.DLL
msxml3.dll
pbodb90.ini
pbvm90.dll
pbodb90.dll
MSVCRT.DLL
pbaen90.tlb
pbdwe90.dll
libjsybheap.dll
还有程序自动注册程序如下:

int li_retu
string ls_temp,ls_dbprofile="bps",ls_db="bps.db"
string ls_driver,ls_start,li_sysdir,ls_dbpath
//判断Sybase SQL Anywhere8.0的驱动程序是否正确安装
ls_driver = gs_CurrentDirectory+"\ASA\dbodbc8.dll"
ls_start = gs_CurrentDirectory+"\ASA\dbeng8.exe -c 8m -q"
ls_dbpath= gs_CurrentDirectory+"\data\"+ls_db;
If NOT(FileExists(ls_driver)or FileExists(ls_start)) THEN
Messagebox("提示","系统无法发现数据库所需的动态库请检查!",StopSign!);
RETURN - 1;
END IF
//设置ODBC\ODBCINST.INI\ODBC DRIVERS
ls_temp=""
li_retu=RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive Server Anywhere 8.0",RegString!,ls_temp);
if isnull(ls_temp) or (Not ls_temp="Installed") then // 1
li_retu=RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER","Adaptive Server Anywhere 8.0",RegString!,"Installed");
end if
//设置ODBC\ODBCINST.INI
li_retu=RegistryGet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Driver",RegString!,ls_temp)
if Not li_retu=1 then
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Driver",RegString!,"Installed")
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Setup",RegString!,ls_driver);
else
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Driver",RegString!,"Installed")
RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0","Setup",RegString!,ls_driver);
end if
//设置ODBC DATA SOURCE(MyDataSource为数据源名)
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources",ls_dbprofile,RegString!,"Adaptive Server Anywhere 8.0");
//设置ODBC.INI

li_retu=RegistryGet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"driver",RegString!,ls_temp)
if Not li_retu=1 then
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"driver",RegString!,ls_driver);
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"start",RegString!,ls_start);
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"autostop",RegString!,"yes");
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"DataBaseFile",RegString!,ls_dbpath);
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"DataBaseName",RegString!,ls_dbprofile);
else
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"driver",RegString!,ls_driver);
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"start",RegString!,ls_start);
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"autostop",RegString!,"yes");
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"DataBaseFile",RegString!,ls_dbpath);
li_retu=RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_dbprofile,"DataBaseName",RegString!,ls_dbprofile);
end if

return 0;
回复
mittee 2003-12-17
必须有dbodbc7.dll,dbserv7.dll ,dbctrs7.dll dblgen7.dll,dbnetlib.dll,dbcon7.dll,dbeng7.exe ,dbsrv7.exe 8 个文件存在
这些dll要放在\winnt\system32下面
回复
kciv 2003-12-17
SQL Anywhere ODBC数据库驱动程序。
SQL Anywhere 7.0:
DBODBC7.DLL,DBLIB7.DLL,DBWTSP7.DLL,DBLGEN7.DLL,DBODTR7.DLL,DBENG7.EXE

我在8.0找到了
DBODBC8.DLL ,DBLIB8.DLL, DBLGEN8.DLL, DBENG8.EXE
但是另外的两个都找不到
是不是把这些拷贝到目标机器上,就可以算是安装了这个驱动程序吗???
pb程序运行的动态连接库dll 是用这些吗??
PBVM90.DLL PowerBuilder 虚拟机
LIBJCC.DLL PowerBuilder 库管理
PBSYC90.dll Sybase SQL Server接口

恳求帮忙 :(
回复
thelazyman 2003-12-17
要把“数据库程序放到了目标机器上运行”
1、必须确保pb程序运行的动态连接库dll要存在可搜索路径,最好放在当前目录下;
2、确保目标机器已安装数据库驱动程序,你可以在目标机器中单独安装asa8.0
回复
kciv 2003-12-17
关于的驱动程序,我是否可以在客户端那里安装ASA sql 就可以的啊?!!
我开发的是单机版啊.你说那个驱动程序,很多吗???我在baidu 搜索 "Sybase ODBC驱动程序 下载" 竟然找不到啊 .可以帮忙一下吗?谢谢啊!!!
回复
TIGERWONG 2003-12-17
必须要加上对应这个数据库的动态连接库!!
至于驱动程序你可以上网查一下,很多的!!
回复
kciv 2003-12-17
没人顶的????
回复
kciv 2003-12-17
求救啊!!!!!!!!
没有人回答啊?!!!!!!!!
回复
kciv 2003-12-17
banalman(飘泊)确实是一个高手啊,大家可以在他身上学到很多很多东西啦 :)
您的程序,可以问您几个问题吗??
1. ls_dbprofile="bps",ls_db="bps.db" 这些都是根据我自己的数据库而更改的吧??
2. 如何得到 gs_CurrentDirectory ?? 请问是用什么命令啊?
3. ls_dbpath= gs_CurrentDirectory+"\data\"+ls_db \data\ 是要在我的程序里面建立的吗? 是不是把我的db 文件放到这里??
4.好不幸的就是: 我把您的程序copy 到我的程序中 ,出现了错误!!之后 就出现了Database transaction information not available,Call setTrans or SetTransObject function..
求救啊!!!!!!!!
回复
kciv 2003-12-17
mittee(最后一条大白鲨): 这些dll 不是放在自己的程序的目录当中吗???
还有我通过 regsvr32 命令注册了 asa 的dll, 就可以在数据源管理当中看到了 asa 数据源了.但是,我运行我的程序,可以看到了" connect to Adaptive Server Anywhere 对话框"了,但是在电脑屏幕的右下脚并没有出现asa的图标,然后登陆我的程序,在login 我的一个密码的判断失效了, 进入了程序里面,里面的datawindow 没有东西了,运行里面的程序的时候,弹出了
Database transaction information not available,Call setTrans or SetTransObject function.
我在我开发的那台机器上不会出现这样的问题啊.
请教这是什么问题啊 ???
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

804

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告