PB 11 从数据库中取出的字段长度为何总是有N个空格??

dxyvxa 2008-09-12 10:11:46
PB 11 从数据库中取出的字段长度为何总是有N个空格??
(数据库用的是sql2005)

如下:
string ls_temp
select modulename into :ls_temp from modules
where modulename = '基本资料';
messagebox(ls_temp,ls_temp + string(len(ls_temp)))
此处的值为 10 而在数据库中查出的长度是 4

就算是unicode 怎么也不能理解是这个值啊?
以前的从9。0升到11后,也会有这种情况
哪位高手帮解决这个问题
...全文
259 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lionkong_demon 2011-05-12
  • 打赏
  • 举报
回复
我也遇到这样的问题,可以先放到Label上,然后用的.Trim()方法
zhhln_fzq 2008-09-12
  • 打赏
  • 举报
回复
在DbParm参数中加上PBTrimCharColumns='YES',下面是例子:DbParm=PROVIDER='SQLOLEDB',DATASOURCE='.',PROVIDERSTRING='Database=mylis_test;APP=mylis;WSID=ZHH',PBTrimCharColumns='YES',RecheckRows='0'
青锋-SS 2008-09-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dxyvxa 的回复:]
在这里只是想探讨这个问题的解决办法。
当然,要是没有理解的解决方法,贴还是要结的,放心。


我现在只有在别的电脑中另装一个PB11试一下几种方式是否可行了。


[/Quote]不是说你不结贴,csdn确立有问题,你90%多的结贴率竟然成了不足50%.
dxyvxa 2008-09-12
  • 打赏
  • 举报
回复
在这里只是想探讨这个问题的解决办法。
当然,要是没有理解的解决方法,贴还是要结的,放心。


我现在只有在别的电脑中另装一个PB11试一下几种方式是否可行了。

青锋-SS 2008-09-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jlwei888 的回复:]
好低的结贴率!

还不行就是你的问题了!~
[/Quote]貌似结贴率的算法有问题.
青锋-SS 2008-09-12
  • 打赏
  • 举报
回复
这样吧:
string ls_temp
select rtrim(modulename) into :ls_temp from modules
where modulename = '基本资料';
messagebox(ls_temp,ls_temp + string(len(ls_temp)))
jlwei888 2008-09-12
  • 打赏
  • 举报
回复
好低的结贴率!

还不行就是你的问题了!~
dxyvxa 2008-09-12
  • 打赏
  • 举报
回复
jlwei888
按你的方法试了也还不行呢。


sun1976 2008-09-12
  • 打赏
  • 举报
回复
pb11有新参数了?学习
jlwei888 2008-09-12
  • 打赏
  • 举报
回复
在连接参数中选择“Trim Trailing Spaces in CHAR Data”,

dxyvxa 2008-09-12
  • 打赏
  • 举报
回复
varchar 与char 都 试过了,不行,
且 不同的数据库连接方式也试过,如oledb ,SNC SQL Native Client(OLE DB) ,odbc


dxyvxa 2008-09-12
  • 打赏
  • 举报
回复
是PB11的版本
但一样的数据库,在PB9中没有问题

当然你说的用trim以后,得到的是正确的数了 如trim(ls_temp)后,值为 4

原因还不太明的为什么会这样?
你们在从9。0升到10或是11 后有没这样的问题,我一值被这个问题困扰。

sun1976 2008-09-12
  • 打赏
  • 举报
回复
为何非要nvarchar,改成varchar试一下。用Oledb连接,我用pb10,和11是同样的字符集,没有这个问题,我的字段类型是varchar
zhangyh_136 2008-09-12
  • 打赏
  • 举报
回复
messagebox(ls_temp,ls_temp + string(len(ls_temp)))
此处的值为 10 而在数据库中查出的长度是 4

1)len函数不分单,双字节,全部用单字节取值,例如:中国1,它的长度为5,如果用lenw(10,11)用lenA则为3个字符
2)建议用过滤函数进行过滤后,再看看.trim()
dxyvxa 2008-09-12
  • 打赏
  • 举报
回复
数据库中用的是 nvarchar
连接用的是OLEDB 同时ODBC也试过一样的问题

另:
连接到sql2000中也会有这样的问题。

sun1976 2008-09-12
  • 打赏
  • 举报
回复
数据库字段定义数据类型使用varchar,别用char

如果不是数据库字段的数据类型问题,
就是连接方式问题,估计是odbc
改用其他连接方式试试,比如ole db

1,075

社区成员

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

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