[V5、V6功能解说] 水晶报表上其他表内翻译文本的问题
[b]问题概述:[/b]在水晶报表中无法获取其他表的翻译文本。在3个不同服务器(V5和V6.5)的多个账套中进行了测试,所有账套中都发生了同样的问题。
[b]问题重现:[/b]
这个问题可以在一个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);
[b]最初状态[/b]
客户记录:
[attach]4191[/attach]
生成的报表:
[attach]4192[/attach]
在其他表中更改已翻译的描述
将其他表No.425中的[Business]代码的长描述的值更改为“test”:
[attach]4193[/attach]
更改后,客户记录如下:
[attach]4194[/attach]
表ATEXTRA的记录中,看到的是预期中的值“test”:
[attach]4195[/attach]
但生成的报表没有更新,显示的仍然是原来的值:
[attach]4196[/attach]
在报表中检查{?X3LAN}的值,是如预期的“BRI”。
同时,在报表公式中将X3TranslatedText功能的语言参数硬编码为“BRI”,结果也是一样的。
试图更改同一解决方案中所有其他账套的值,包括X3主账套中的值,但仍然是原来的值。
检查其他语言的文本,发现X3数据库中已经没有任何一个地方存储原来的值了,但是出现在报表中的仍然是这个原来的值。这个值似乎被缓存在某处。
[b]解决方法:[/b]
请注意:X3TranslatedTexT功能是一种借助文本文件显示翻译文本信息的老方法。文本文件都是顺序文件,通常自顶部的第一个字符读到底部的最后一个字符。这些数据被读入内存,然后排序。处于性能(读取和排序)的原因考虑,尤其是针对非常大的文本文件,现在采用了SQL视图AVWTEXTRA作为替代。X3和水晶报表程序通过SQL视图和表可以直接查询所需的数据,而无需读取并分类每一条单独的记录,而这提高了性能和内存使用率。如果你想要继续在水晶报表中使用这种老的方法,那么你必须执行以下步骤:
1. 打开功能:开发→数据字典→表→表(GESATB)。
2. 选中相关的[表代码](即TABCOUNTRY)。
3. 勾选[可翻译文本生成]选项(默认情况下是不勾选的)。
4. 点击“审核”按钮,进行审核。接着,不需要选中“强制”按钮。
5. 完成审核之后,前往功能:开发→工具→其他→可翻译文本更新(GENTXTTRA)。
6. 一旦生成结束之后,就会通过表TABCOUNTRY的信息更新\folders\{folder}\根路径下的textraxxx文件。
7. 运行水晶报表时(请确保在水晶报表程序中已经设置了X3TranslatedTexT功能),现在如果读取与“US”相关的记录时,就会显示“美国”了。
请注意:如果没有勾选[可翻译文本生成]选项的情况下你审核了该表,那么审核操作就会自textraxxx文件中删除属于这张表的信息。
[b]测试:[/b]
在表TABCOUNTRY中勾选[可翻译文本生成]选项
[attach]4197[/attach]
运行“可翻译文本更新”功能
[attach]4198[/attach]
[attach]4199[/attach]
[attach]4200[/attach]
重新打印客户信息,此时[Business]字段就变成了“test”。
[attach]4201[/attach]
页:
[1]