你的这个应用是基于哪种数据库呢?
是单机版的(如SQLAnywhere)还是网络版的(例如局域网里的SQLServer、Sybase数据库服务器)?
这两种我都做过一些,包括基于Sybase的网络版的档案管理、基于SQLAnywhere的一些毕业设计,而且主程序都是用PB开发的,你需要详细说明你的情况。
如果是基于SQLAnywhere的,并且在本机可以用、打包后连不了数据库、或在其他机器安装后无法连接数据库的问题,我最初也遇到过,解决的办法是:
在主应用里(程序的入口处)写一些代码,主要用来:
1、获取数据库的路径,并指定连接它
2、在注册表里插入新键,用于设置数据库的连接参数(程序安装后初次使用时创建)
说起来挺简单,但做起来比较麻烦
因为不知道你的具体情况,就没有必要详细说了。
----------------------------------------------------------------------
修改答复如下:
找了一个以前的应用,是给一个学生写的“小区监控系统”(早期编写的,PB版本是6.5、数据库是SQLAnywhere5.5)
以下的部分,是程序入口处(主应用main.pbl的open()事件)的一段代码,就是用来指定连接数据库的:
string currentdir //定义变量,用于取得程序所在的路径
currentdir=Space(256)
GetCurrentDirectoryA(256,currentdir) //系统函数,准备取路径
string s_value_drive,s_value_start
s_value_drive=currentdir+"\anywhere\wod50t.dll"
s_value_start=currentdir+"\anywhere\dbeng50.exe"
string ls_ODBC1="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources"
RegistrySet(ls_ODBC1,'MONITOR','Sybase SQL Anywhere 5.0')
string ls_ODBC2="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MONITOR"
RegistrySet(ls_ODBC2,'AutoStop','yes')
RegistrySet(ls_ODBC2,'DatabaseFile',currentdir+'\MONITOR.DB')
RegistrySet(ls_ODBC2,'DatabaseName','MONITOR')
RegistrySet(ls_ODBC2,'Driver',s_value_drive)
RegistrySet(ls_ODBC2,'PWD','sql')
RegistrySet(ls_ODBC2,'Start',s_value_start)
RegistrySet(ls_ODBC2,'UID','dba')
SQLCA.DBMS = profilestring("MONITOR.ini","database","DBMS","")
SQLCA.DBParm = profilestring("MONITOR.ini","database","dbparm","")
SQLCA.AutoCommit = false
connect using sqlca;
if sqlca.sqlcode<>0 then
messagebox('','数据库连接失败,请检查相关设置')
else
open(w_main)
open(w_login)
end if
----------------------------------------------------------------------
另外,代码里涉及的MONITOR.ini,是我程序目录里的一个INI配置文件,它的内容是:
[DATABASE]
DBMS=ODBC
dbparm=Connectstring='DSN=MONITOR'
另外,团IDC网上有许多产品团购,便宜有口碑
是根据ODBC数据源连接程序吧?
怎么说叫创建ODBC库呢?什么意思?麻烦您说的详细一下吧。
如果只是创建库的话,那不应该在PB中完成了。
PB只是完成连接数据库并进行数据库表的相关操作。
不过倒是可以根据ODBC的连接方式连接数据库。