用友T3建年度账时报错,提示:将截断字符串或二进制数据

问题现象:用友T3财务软件在年结的时候建立年度账的时候提示:将截断字符串或二进制数据。错误提示如下图所示。Inventory表的cInvStd列(规格型号),列长为80字符,而默认是60字符,所以报错。

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第1张图片

问题分析:使用事件探测器跟踪出错语句如下: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软件建立新年度账时报错,提示:将截断字符串或二进制数据

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第2张图片

2、原因是Ufmodel库生成的新年度账Vendor表的cVenAbbName列长度为60,而去年此列长度为70,导致在不能写入此表数据:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第3张图片

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第4张图片

3、当然如果2008年cVenAbbName列没有记录数大于60个字符,在新年度中插入表记录时也没问题,但进表观察有一记录为33个中文字(66个字符),所以原因在于33个中文字插入失败:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第5张图片

4、如果采用方式1修改一下2008年此供应商简称改为30个中文字之内,等生成新年度账后再改为原供应商简称即可,现在采用方式2修改Ufmodel库,操作如下,先还原Ufmodel数据库

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第6张图片

5、在常规栏中数据库名称为Ufmodel:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第7张图片

6、选项栏物理文件名可能硬盘中不存在,需手工调整,如改为c:\ufdata.ldf和c:\ufdata.mdf:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第8张图片

7、现在Ufmodel数据库已正常还原,然后调整数据库结构,找到Vendor表选设计表:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第9张图片

8、修改cVenAbbName列长度为70:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第10张图片

9、修改后保存,现在数据库结构已做调整,接下去备份Ufmodel数据库:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第11张图片

10、覆盖原Ufmodel.bak文件即可:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第12张图片

11、再建立2009年新年度账,建立成功:

用友T3建年度账时报错,提示:将截断字符串或二进制数据 用友知识堂 第13张图片

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论