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

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

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 = 1 To UpperBound(ls_profile[])
li_pos = Pos(ls_profile[li_loop] ,‘(*.mdb)’)
If li_pos > 0 Then
ls_source_engine = ls_profile[li_loop]
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 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当使用pb(即PowerBuilder)读取Excel文件时,出现ODBC 37000错误,这是因为在ODBC连接字符串或SQL语句中存在问题导致的。 一种可能的情况是ODBC连接字符串的配置有误。在PowerBuilder中,我们可以使用ODBC连接字符串来访问不同类型的数据源,如Excel。通常,ODBC连接字符串需要指定Excel文件的路径、驱动程序和其他连接参数。如果其中有任何错误,如路径错误、驱动程序错误或其他参数错误,都会导致无法建立有效的连接,进而引发ODBC 37000错误。 另一种可能的情况是在执行SQL语句时存在问题。在PowerBuilder中,我们可以使用SQL语句来查询Excel文件中的数据。如果SQL语句语法有误,如表名或列名错误、查询条件错误或语句结构错误,都会导致执行失败,进而引发ODB 37000错误。 要解决这个错误,我们可以采取以下步骤: 1. 确认ODBC连接字符串的正确性。检查Excel文件的路径是否正确,确认使用的驱动程序是否适用于Excel文件,并检查其他连接参数是否正确配置。 2. 检查SQL语句的正确性。确保查询的表名和列名正确,查询条件合理,并检查语句的语法是否符合PowerBuilder的要求。 3. 使用PowerBuilder提供的调试工具来逐步调试代码,定位具体的错误位置,并逐步排查错误的原因。 总之,当使用pb读取Excel文件时遇到ODBC 37000错误,我们需要仔细检查ODBC连接字符串和SQL语句的正确性,以及进行逐步调试,才能找到并解决问题。 ### 回答2: PB是指PowerBuilder,而37000是ODBC驱动程序返回的特定错误代码。 当使用PowerBuilder的ODBC功能读取Excel文件时,可能会遇到"ODBC 37000"错误。这个错误通常表示在执行SQL查询时发生了语法错误。 造成这个错误的原因可能有以下几种情况: 1. SQL查询语句中存在错误的语法或拼写错误。在使用ODBC读取Excel文件时,查询语句必须遵循正确的SQL语法。请检查查询语句中的每一个组件,确保语法正确无误。 2. Excel文件的表名或列名不正确。要读取Excel文件,必须提供正确的表名和列名。在编写查询语句时,确保表名和列名与Excel文件中的实际名称一致。 3. Excel文件可能被其他程序锁定。如果Excel文件正在被其他程序占用或锁定,PowerBuilder将无法读取文件中的数据。请确保Excel文件没有被其他程序打开或锁定。 4. ODBC驱动程序的版本不兼容。由于PowerBuilder是一个比较旧的开发工具,某些最新版本的ODBC驱动程序可能不与其兼容。请确保使用与PowerBuilder版本兼容的ODBC驱动程序。 解决这个问题的方法包括: 1. 仔细检查语法错误并修复查询语句中的错误。 2. 确认Excel文件中的表名和列名与查询语句中的名称一致。 3. 确保Excel文件没有被其他程序打开或锁定。 4. 尝试使用与PowerBuilder版本兼容的ODBC驱动程序。如果当前的驱动程序不起作用,尝试回滚到一个早期版本或升级到更新的PowerBuilder版本。 总之,"ODBC 37000"错误表示在PowerBuilder中使用ODBC读取Excel文件时发生了语法错误。通过修复查询语句的语法错误、确认表名和列名的正确性,以及保证Excel文件没有被其他程序锁定,可以解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值