问题现象:用友T3财务软件在年结的时候建立年度账的时候提示:将截断字符串或二进制数据。错误提示如下图所示。Inventory表的cInvStd列(规格型号),列长为80字符,而默认是60字符,所以报错。
问题分析:使用事件探测器跟踪出错语句如下:INSERT INTO Inventory(cInvCode,cInvAddCode,cInvName,cInvStd,cInvCCode,…) Values('100001','KKHP','咳快好片','26.4mg*96T[大连天宇海滨制药有限公司]','10',…)
解决方案:供应商档案里的供应商简称长度为60个字符(即30个中文字),由于用户供应商简称过长而不够使用,从而修改表Vendor(供应商档案表)的cVenAbbName字段列(供应商简称)的长度为70个字符,导致新年度账在传输基础数据表Vendor时报错,具体报错情况和修改流程如下(注:账套号333,年度2008,新建2009年年度账时报错,修改以说明的方式2为例)
1、用友T3软件建立新年度账时报错,提示:将截断字符串或二进制数据:
2、原因是Ufmodel库生成的新年度账Vendor表的cVenAbbName列长度为60,而去年此列长度为70,导致在不能写入此表数据:
3、当然如果2008年cVenAbbName列没有记录数大于60个字符,在新年度中插入表记录时也没问题,但进表观察有一记录为33个中文字(66个字符),所以原因在于33个中文字插入失败:
4、如果采用方式1修改一下2008年此供应商简称改为30个中文字之内,等生成新年度账后再改为原供应商简称即可,现在采用方式2修改Ufmodel库,操作如下,先还原Ufmodel数据库:
5、在常规栏中数据库名称为Ufmodel:
6、选项栏物理文件名可能硬盘中不存在,需手工调整,如改为c:\ufdata.ldf和c:\ufdata.mdf:
7、现在Ufmodel数据库已正常还原,然后调整数据库结构,找到Vendor表选设计表:
8、修改cVenAbbName列长度为70:
9、修改后保存,现在数据库结构已做调整,接下去备份Ufmodel数据库:
10、覆盖原Ufmodel.bak文件即可:
11、再建立2009年新年度账,建立成功: