ehxz 发表于 2023-5-11 16:20:34

PB在用代码里自动注册ODBC连接的方式。

【路人】CHOATE(372704175)16:18:10
是啊。我客户端不用设置就这样运行软件自动注册
String ls_system_dir ,ls_barcode_file ,ls_driver_file
String ls_reg_key = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\'
String ls_source_name = 'BESTAR BARCODE'
ulong li_buf

li_buf = 144
ls_system_dir = Space(144)
GetSystemDirectoryA(ls_system_dir, li_buf)

ls_reg_key = ls_reg_key + ls_source_name
ls_barcode_file = gs_current_path + '\barcode.mdb'
ls_driver_file= ls_system_dir + '\odbcjt32.dll'

RegistrySet(ls_reg_key ,'DBQ'    ,RegString! ,ls_barcode_file)
RegistrySet(ls_reg_key ,'Driver' ,RegString! ,ls_driver_file)
RegistrySet(ls_reg_key ,'DriverId' ,ReguLong! ,25)
RegistrySet(ls_reg_key ,'FIL' ,RegString! ,'MS Access;')
RegistrySet(ls_reg_key ,'SafeTransactions' ,ReguLong! ,0)
RegistrySet(ls_reg_key ,'UID' ,RegString! ,'Admin')

//在ODBC Data Sources中加入数据源,以便在控制台的ODBC32中能出现
String ls_profile[] ,ls_source_engine
Integer li_rtn ,li_loop ,li_pos
Boolean lb_flag

lb_flag = False
ls_reg_key = 'HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI'
li_rtn = RegistryKeys(ls_reg_key ,ls_profile[])
For li_loop = 1To UpperBound(ls_profile[])
       li_pos = Pos(ls_profile ,'(*.mdb)')
       If li_pos > 0 Then
               ls_source_engine = ls_profile
               lb_flag = True
               Exit
       End If
Next

//注册到当前户的ODBC数据源中
ls_reg_key = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources'
If lb_flag = True Then
        RegistrySet(ls_reg_key ,ls_source_name ,RegString! ,ls_source_engine)
End If

tr_barcode = Create Transaction ;
tr_barcode.DBMS = "ODBC"
tr_barcode.AutoCommit = False
tr_barcode.DBParm = "ConnectString='DSN=BESTAR BARCODE;UID=Admin;PWD='"
Connect Using tr_barcode ;
你们试一下,我用了10多年,

preter666 发表于 2023-5-27 13:54:05

全局函數都放上來
页: [1]
查看完整版本: PB在用代码里自动注册ODBC连接的方式。

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com