数据窗口字段保存显示超过255个字符

数据窗口字段保存显示超过255个字符


数据窗口字段保存显示超过255个字符
用的是PB8 + SQL SERVER2000,
字段bz varchar(600)
我现在采用的方法是在数据源中这样写:CONVERT(A.bz) AS bz
我录入一个100多字符的数据,这样弄了,录入、显示、保存是没问题,但是程序retrieve的时候,老提示“数据转换溢出”
但是我在数据窗口预览里直接retrieve,又没提示。


专家回答
方案一、
超过255的,不要用varchar类型,用text类型,设计完数据窗口后,手动将列的长度设置为600即可 


方案二
varchar可以超过255的,只是PB默认是建议不要超过255,但你可以改 
在PB连接数据库的地方,你编辑你连接数据库database profile,在Syntax选项卡里 
有一个Text Limit in SQL:的值,默认是255,你改大一点,比如3000,保存后,你的有可能超过255的datawindow都重新生成一下(重新生成不是重新做) 
然后你再看preview选项卡,会发现SQLCA.DBParm = "DBTextLimit='3000'"多了这么一句话 
这句话你是要加到你程序里连接数据库的代码里的


以下针对SQLSERVER2000、2005数据库


 


输入限制的解除
1、选中数据窗口,点击右键,选择"Edit Source"菜单,进入到数据窗口源代码方式,找到相应的字段,比如:
column=(type=char(255) update=yes updatewhereclause=yes name=msg_body dbname="jc_sysmessage.msg_body" ),
将以上语句改为:
column=(type=char(4000) update=yes updatewhereclause=yes name=msg_body dbname="jc_sysmessage.msg_body" )
然后保存。此方法主要是为了解决在数据提交到数据窗口数据缓冲区时的判断,如果是255,会提示超出长度。
 


2、双击打开数据窗口,选中字段msg_body,选择属性页中的EDIT标签,
将Limit改为4000,对应数据库字段的长度。
经过以上修改后,现在可以输入2000个汉字,包括空格与回车符。并且可以保存成功了。
以上只完成了第一步,数据可以保存到数据库的表中了,但是你会发现在显示时,还是无法显示,这是因为SQLSERVER针对VARCHAR类型的数据做了限制,如果要显示更多数据,需要做以下处理
1、将字段类型改为TEXT类型,如果是SQLSERVER2005,也可以使用VARCHAR(MAX)类型,然后到数据窗口中,将此字段重新选择一次,你会发现在数据窗口字段列表中,字段长度变为CHAR(4099)了,显示数据超过了255个字符。
2、以上方法需要修改数据库。另一种方法可以不修改数据库。字段类型为varchar(4000)。双打开数据窗口,选择Data Source进入到SQL语法编辑窗口,将SQL语句中的字段进行转换,CONVERT(text,msg_body) AS msg_body,返回后,你会发现字段长度变为CHAR(4099)了,同样可以用于保存与显示超过255个字符的限制。
3、以上转换后,限制在了4099个字符,如何可以超过这个限制呢,在默认情况下,SQLSERVER对于TEXT类型的字段限制返回4099个字符,如果想突破,就得想办法了。
进入DB Profile数据库配置窗口,打开连接,选择Syntax标签页,如图,将Text Limit改为需要的值,再查看Preview标签页,
 


注意SQLCA.DBParm = "DBTextLimit='8000'",此参数就是用于突破TEXT类型字段的限制的,到此就完成了整个工作,你可以保存和显示超过255个字符的限制了。当然你还得重复第一步中的第1小项,将数据窗口的CHAR值改为相应的数值char(8000)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值