返回列表 发帖

[V5、V6功能解说] 水晶报表上其他表内翻译文本的问题

问题概述:
在水晶报表中无法获取其他表的翻译文本。在3个不同服务器(V5和V6.5)的多个账套中进行了测试,所有账套中都发生了同样的问题。


问题重现:
这个问题可以在一个demo账套和一个标准报表中重现,例如:
—— X3版本:V6.5
—— 账套:DEMO,语言BRI
—— 版本:某个客户记录上的BPC1

在BPC1报表中,公式F_BUS从其他表No.425中获得了客户功能“Business”字段的BRI翻译文本。公式如下:
WhilePrintingRecords;
stringVar X3TEX:="ATABDIV~LNGDES~"+totext({ATABDIV_BUS.NUMTAB_0},0,"",".")+"~"+{ATABDIV_BUS.CODE_0}+"~";
X3TranslatedText ({?X3DOS},{?X3LAN},X3TEX);

最初状态
客户记录:


生成的报表:


在其他表中更改已翻译的描述
将其他表No.425中的[Business]代码的长描述的值更改为“test”:


更改后,客户记录如下:


表ATEXTRA的记录中,看到的是预期中的值“test”:


但生成的报表没有更新,显示的仍然是原来的值:


在报表中检查{?X3LAN}的值,是如预期的“BRI”。

同时,在报表公式中将X3TranslatedText功能的语言参数硬编码为“BRI”,结果也是一样的。

试图更改同一解决方案中所有其他账套的值,包括X3主账套中的值,但仍然是原来的值。

检查其他语言的文本,发现X3数据库中已经没有任何一个地方存储原来的值了,但是出现在报表中的仍然是这个原来的值。这个值似乎被缓存在某处。


解决方法:
请注意:X3TranslatedTexT功能是一种借助文本文件显示翻译文本信息的老方法。文本文件都是顺序文件,通常自顶部的第一个字符读到底部的最后一个字符。这些数据被读入内存,然后排序。处于性能(读取和排序)的原因考虑,尤其是针对非常大的文本文件,现在采用了SQL视图AVWTEXTRA作为替代。X3和水晶报表程序通过SQL视图和表可以直接查询所需的数据,而无需读取并分类每一条单独的记录,而这提高了性能和内存使用率。如果你想要继续在水晶报表中使用这种老的方法,那么你必须执行以下步骤:

1.        打开功能:开发→数据字典→表→表(GESATB)。
2.        选中相关的[表代码](即TABCOUNTRY)。
3.        勾选[可翻译文本生成]选项(默认情况下是不勾选的)。
4.        点击“审核”按钮,进行审核。接着,不需要选中“强制”按钮。
5.        完成审核之后,前往功能:开发→工具→其他→可翻译文本更新(GENTXTTRA)。
6.        一旦生成结束之后,就会通过表TABCOUNTRY的信息更新\folders\{folder}\根路径下的textraxxx文件。
7.        运行水晶报表时(请确保在水晶报表程序中已经设置了X3TranslatedTexT功能),现在如果读取与“US”相关的记录时,就会显示“美国”了。

请注意:如果没有勾选[可翻译文本生成]选项的情况下你审核了该表,那么审核操作就会自textraxxx文件中删除属于这张表的信息。


测试:
在表TABCOUNTRY中勾选[可翻译文本生成]选项


运行“可翻译文本更新”功能






重新打印客户信息,此时[Business]字段就变成了“test”。

附件: 您需要登录才可以下载或查看附件。没有帐号?申请用户

返回列表