PB开发笔记之Access+ODBC自动注册和发布[转贴]

转载 2007年09月22日 18:44:00
1。代码如下:
string datafile,odbc_driver
int reg_result
integer odbc_init
odbc_init=profileint("system.ini","start","first",1)

ulong ul_n,ul_m
ul_n=25
ul_m=0
//第一次运行时进行注册
//if odbc_init= 1 then //如果等于1 则进行注册
//判断系统是否已经安装Access
string ls_sys,ls_install
ls_sys="HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST.INI/ODBC DRIVERS"
RegistryGet(ls_sys, "Microsoft Access Driver (*.mdb)", RegString!,ls_install)
if trim(ls_install)<> "Installed" then
messagebox("错误","未安装Microsoft Access Driver")
halt
end if

environment env // holds environment information
string startupfile // holds name of start-up file

/* Get the environment information */
IF ( GetEnvironment(env) <> 1 ) THEN
MessageBox( "Application: Open", "Unable to get environment information.~n Halting ..." )
HALT
END IF

/* Select start-up file by operating system */
CHOOSE CASE env.OSType
CASE Windows!
if directoryexists('c:/windows/System') then
odbc_driver="c:/windows/System/odbcjt32.dll"
elseif directoryexists('d:/windows/System') then
odbc_driver="d:/windows/System/odbcjt32.dll"
elseif directoryexists('e:/windows/System') then
odbc_driver="e:/windows/System/odbcjt32.dll"
elseif directoryexists('f:/windows/System') then
odbc_driver="f:/windows/System/odbcjt32.dll"
elseif directoryexists('g:/windows/System') then
odbc_driver="g:/windows/System/odbcjt32.dll"
else
messagebox('错误!','无法注册ODBC!')
halt
end if

case WindowsNT!
if directoryexists("c:/WINNT/System32") then
odbc_driver="c:/WINNT/System32/odbcjt32.dll"
elseif directoryexists("d:/WINNT/System32") then
odbc_driver="d:/WINNT/System32/odbcjt32.dll"
elseif directoryexists("e:/WINNT/System32") then
odbc_driver="e:/WINNT/System32/odbcjt32.dll"
elseif directoryexists("f:/WINNT/System32") then
odbc_driver="f:/WINNT/System32/odbcjt32.dll"
elseif directoryexists("g:/WINNT/System32") then
odbc_driver="g:/WINNT/System32/odbcjt32.dll"
else
messagebox('错误!','无法注册ODBC!')
halt close
end if

//CASE Sol2!, AIX!, OSF1!, HPUX!
//CASE Macintosh!
CASE ELSE
MessageBox( "错误!", "该软件只能在Windows或WindowsNT上运行!!" )
HALT close
END CHOOSE
//使用函数GetCurrentDirectory()得到当前目录
//与数据库文件名合并为一个字串变量后得到数据库文件所在路径
string ls_dir
ls_dir = GetCurrentDirectory()
if right(ls_dir,1) = '/' then
datafile = ls_dir + 'db1.mdb'
else
datafile = ls_dir + '/' + 'db1.mdb'
end if
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/odbc datasources","test1",regstring!,"Microsoft Access Driver (*.mdb)")
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","",regstring!," ")
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","DBQ",regstring!,datafile)
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","driver",regstring!,odbc_driver)
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","driverID",regulong!,ul_n)
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","Fil",regstring!,"MS access;")
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","safetransaction",regulong!,ul_m)
reg_result =registryset("HKEY_CURRENT_USER/software/odbc/odbc.ini/test1","uid",regstring!," ")
// setprofilestring("system.ini","start","first","0")
//end if
//ODBC 注册结束

// This script will read all the database values from PB.INI
// and store them in SQLCA.
//建立与数据库的连接
SQLCA.DBMS =ProfileString("test1.ini","Profile Brands Manage","DBMS", " ")
SQLCA.DbParm =ProfileString("test1.ini","Profile Brands Manage","DbParm", " ")
string ls_autocommit
ls_autocommit = ProfileString("test1.ini","Profile Brands Manage","AutoCommit", " ")
if Upper(ls_autocommit) = 'FALSE' then
SQLCA.autocommit = false
else
SQLCA.autocommit = true
end if

CONNECT USING SQLCA;
IF SQLCA.SQLCode = -1 THEN
MessageBox("连接数据库", " 不能连接到数据库上,请检查网络与用户名是否正确。~r~n出错的详细原因为:"+SQLCA.SQLErrText)
Halt Close
END IF
open(w_test)

2。其中system.ini文件在系统目录下,test1.ini的内容如下:
[Profile Brands Manage]
DBMS = "ODBC"
AutoCommit = False
DBParm = "ConnectString='DSN=test1;UID=;PWD='"

3。发布需要的文件有:
db1.mdb 数据文件
test1.exe 可执行文件
test1.ini
test1.dll
以及必须的支持文件
pbvm90.dll
libjcc.dll
libjsybheap.dll
pbdwe90.dll
pbodb90.dll :pb的ODBC接口文件
另外系统目录下必须有odbc驱动,系统必须安装有Access。 
 

PB开发笔记之Access+ODBC自动注册和发布

1。代码如下:string datafile,odbc_driverint reg_resultinteger odbc_initodbc_init=profileint("system.ini","...
  • ccczqh
  • ccczqh
  • 2006年09月07日 09:05
  • 1188

pb自动注册ASA数据源

函数定义 /* 函数名称 f_odbc_autoreg 函数功能 将拷贝到winsystem32 下的数据库进行注册 函数参数:mydb_name 将注册数据库名称: 适用范围pb9.0 sq...
  • suntoto
  • suntoto
  • 2008年05月03日 19:24
  • 1548

pb8使用代码注册C#编写的dll

//使用regasm命令注册unzipfile.dll int li_ret li_ret = run("regasm unzipfile.dll /tlb:unzipfile.tlb",minimi...
  • kennyzjk
  • kennyzjk
  • 2015年05月17日 10:19
  • 315

PB中通过ODBC直接连接数据库,不用注册数据源。

在一次用数据库画板连接Access的时候,没有设置任何的参数,结果弹出了一个选择数据源的框,我选择了一个DSN文件,结果连接成功了。以前一直不知道怎么用DSN文件来连接数据库,在琢磨之后,发现了下面的...
  • sunday_hl
  • sunday_hl
  • 2006年11月23日 15:14
  • 5018

pb自动注册ole控件

pb自动注册ole控件默认分类2011-02-28 11:32:05阅读50评论0  字号:大中小 订阅方法一:  1.手工注册OCX控件 将该控件随程序一起发布,然后,将此文件拷到windows/s...
  • builderwfy
  • builderwfy
  • 2011年05月28日 19:34
  • 695

pb自动注册ODBC的sqlanywhere数据源

 pb自动注册ODBC的sqlanywhere数据源 (2013-04-09 13:13:12) 转载▼ 标签: pb9 odbc 自动注册 sqlanyw...
  • tlammon
  • tlammon
  • 2015年06月01日 10:03
  • 762

【原创】PB开发Web Service接口环境搭建及问题解决

工作需要用WebService方式做接口,折腾了半月,走了无数弯路,才初见眉目。为了避免坚守PB开发的老中青同学们以后遇到同样的问题,在此做个简要总结。   ——by nocry115/泥草鞋前言:...
  • nocry115
  • nocry115
  • 2016年09月11日 14:38
  • 6488

PB中如何编写COM和COM+程序.

    COM/COM+作为取代OLE的一种新技术,问世已经很久了,PB7中也早已提供了对它的支持,不过从现实情况上看,似乎大家使用到的不是很多,其实对于新一代的互联网应用,它还是能够发挥很大作用.下...
  • daixf_csdn
  • daixf_csdn
  • 2004年11月06日 11:20
  • 4826

pb 11.5 web开发 - 第一个应用

新建worksapce - pb115test,没什么可说的,和其他版本没什么差别新建target :    ...
  • xys_777
  • xys_777
  • 2009年07月31日 16:14
  • 6449

PB自动注册OCX控件

今天转了一些常用处理方法,经常用得到这些方法,自己以不想抄,只能COPY了。 方法一:   1.手工注册OCX控件  将该控件随程序一起发布,然后,将此文件拷到windows\system,...
  • tomandllj
  • tomandllj
  • 2017年12月07日 17:12
  • 31
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PB开发笔记之Access+ODBC自动注册和发布[转贴]
举报原因:
原因补充:

(最多只允许输入30个字)