PB9,MSSQL2000,请教,使用“OLE DB”数据接口,与使用“MSS Microsoft SQL Server”的区别,以及产生的问题如何解决?

my_yinger 2010-03-26 01:48:35
PB9,MSSQL2000,请教,使用“OLE Microsoft OLE DB”数据接口,与使用“MSS Microsoft SQL Server”的区别,以及产生的问题如何解决?

一个程序PB9,MSSQL2000,原来编写的时候,使用的是“MSS Microsoft SQL Server”接口连接的数据库

SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = "fcjg"
SQLCA.LogPass = sa
SQLCA.ServerName = "clzw-ljh"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = True
SQLCA.DBParm = ""
--------------------------------------------------------------------------------
现在改用“OLE Microsoft OLE DB”连接

SQLCA.DBMS = "OLE DB"
SQLCA.LogPass = sa
SQLCA.LogId = "sa"
SQLCA.AutoCommit = True
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='clzw-ljh',PROVIDERSTRING='database=fcjg',TIMEOUT=10"
--------------------------------------------------------------------------------

两种连接数据库的方法都是可以正常连接数据库的。问题是
原来使用"MSS Microsoft SQL Server"连接时,数据库中一个长度为10的字符列中如果只有3个字符,例如"123",哪么在PB中类似
SELECT .... INTO....这样的语句取出的 字符串 就是 "123"
而改用"OLE Microsoft OLE DB"连接时,类似
SELECT .... INTO....这样的语句取出的 字符串 就是 "123 "

在数据窗口中也会出现这种情况。这两种区别造成了整个程序的混乱。

一问:这种区别是如何产生的?
二问:如何让用"OLE Microsoft OLE DB"跟用"MSS Microsoft SQL Server"连接时一样?
...全文
308 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
HSB19820706 2010-03-29
  • 打赏
  • 举报
回复
pb11 就只有OLE Microsoft OLE DB了
zb63668331 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lovemoreh 的回复:]
我一般是设置:
transobject.lock = 'rc'.

你参考看看。
[/Quote]
跟这个没关系
不行的话你都改为变量
lovemoreh 2010-03-26
  • 打赏
  • 举报
回复
我一般是设置:
transobject.lock = 'rc'.

你参考看看。
my_yinger 2010-03-26
  • 打赏
  • 举报
回复
re : zb63668331

一,在编写程序过程中 要用到 Database Profiles 的啊

二,马上就有问题了

代码中有句
INSERT INTO sfjl(xh,jyear,jmonth,bm,qubh,louhao,mph,jzmj,symj,yzf,ywf,sfbz,jfxz,jfxs)
SELECT "退/补",:d_year,:i,bm,qubh,louhao,mph,jzmj,symj,:d_yzf,:d_ywf,1,"当年","现金" FROM main where sfbz = 1 and bm = :i_bm ;

用“MSS Microsoft SQL Server”连接时正常能插入数据,而在用“OLE Microsoft OLE DB”时候就不能,

跟踪发现好像提示 "退/补"是无效的列

,使用“OLE Microsoft OLE DB”数据接口,与使



my_yinger 2010-03-26
  • 打赏
  • 举报
回复
re : lovemoreh

请说下并发控制的区别
lovemoreh 2010-03-26
  • 打赏
  • 举报
回复
这个问题,在数据库设置字段为varchar型也可以解决。

两种连接的区别,还有一个重要的方面,就是并发控制。
zb63668331 2010-03-26
  • 打赏
  • 举报
回复
一,代码直接加
二,有问题再问
my_yinger 2010-03-26
  • 打赏
  • 举报
回复
谢谢楼上二位,代码中加入这句后可以了。

但还要问下,

1、这个 PBTrimCharColumns='YES' 在PB的 Database Profiles 中如何选择?哪个选项是它?

2、"OLE Microsoft OLE DB"连接与"MSS Microsoft SQL Server"连接还有其他的那些区别吗?担心这个解决了又出其他的问题。
jimwoo 2010-03-26
  • 打赏
  • 举报
回复
SQLCA.DBParm 里加上PBTrimCharColumns='YES'
zb63668331 2010-03-26
  • 打赏
  • 举报
回复
PBTrimCharColumns='YES'
my_yinger 2010-03-26
  • 打赏
  • 举报
回复
论坛的问题:
这句话
--------------------------------------------------------
而改用"OLE Microsoft OLE DB"连接时,类似
SELECT .... INTO....这样的语句取出的 字符串 就是 "123 "
--------------------------------------------------------
意思是:

而改用"OLE Microsoft OLE DB"连接时,类似
SELECT .... INTO....这样的语句取出的 字符串 就是 "123口口口口口口口"

“口”代表“空格”

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧