PB9使用ODBC连接MSSQLSERVER的问题

因工作需要,近期将PB9连接MSSQL的数据接口由专用的"MSS Microsoft SQL Server"改为“ODBC”,结果出现了一堆的问题,项目告一段落进行一下问题汇总。

1、SQL子查询中有参数则该SQL不能执行

SELECT * FROM T1 WHERE ID IN(SELECT ID FROM T2 WHERE T2.NAME = :S)

该语句在子查询中使用了一个参数,如果该SQL用于数据窗口中,则无法检索数据,包括EXISTS子查询也是如此

解决方法:

SQLCA.DBMS = "ODBC"
SQLCA.Database = ls_param[10]
SQLCA.ServerName = ls_param[7]
SQLCA.LogId = ls_param[8]
SQLCA.LogPass = ls_param[9]
SQLCA.AutoCommit = False
SQLCA.Lock = "RC"
SQLCA.DBParm = "ConnectString='" + &
                "UID=" + ls_param[8] + ";" + &
				"PWD=" + ls_param[9] + ";" + &
				"Driver={SQL Server Native Client 10.0};" + &
				"Server=" + ls_param[7] + ";" + &
				"Database=" + ls_param[10] + ";" + &
				"APP=MYAPP;" + &
				"WSID=" + gs_computer + "'," + &
				"CommitOnDisconnect='No',StaticBind=0,DisableBind=1"

在SQLCA.DBPARM的结尾处增加StaticBind=0,DisableBind=1两个选项即可

2、SELECTBLOB一个IMAGE字段时,仅能返回32767字节

这个问题网上搜到的结果全部都是修改PBODB90.INI中的PBMaxBlobSize='32767'和PBMaxTextSize='32767'两项,删除、注释、修改为0等方法,尝试过N次不行后,发现需要把pbodb90.dll文件复制到程序所在文件夹下就可以了,因为是一个老项目,该放入的DLL基本上都已经放入了,所以没考虑过DLL文件的问题,走了一夜的弯路。

3、当字段类型为VARCHAR(MAX)时,数据窗口不能识别数据宽度,检索不到数据

SQL2008的VARCHAR类型宽度范围是1-8000,NVARCHAR类型宽度范围是1-4000,当使用MAX时可以达到2G,但数据窗口不能识别超过8000的字段,所以数据宽度会显示为char(0),并且无数据返回。只能修改表结构,不要使用MAX或使用IMAGE字段存储

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值