我在Crystal Reports XI中遇到If statement
的问题。
这是我的代码:
IF {ANAGRAFICACF.CODLINGUA} = {DESCRARTICOLI.LINGUA}
THEN
{DESCRARTICOLI.DESCRIZIONEAGG}
ELSE
{RIGHEDOCUMENTI.DESCRIZIONEART};
问题是Crystal Reports只检索条件已验证的行,并完全忽略else条件。因此,如果在我的文档中有10行,它会向我显示只有2行验证了条件。
你能解释一下原因吗?我觉得这没关系。它只是一个简单的if statement
。
根据您的要求提供更多详细信息:
我也尝试了这段代码
IF NOT ISNULL({DESCRARTICOLI.DESCRIZIONEAGG}) AND {TESTEDOCUMENTI.CODLINGUA} <>0
THEN
{DESCRARTICOLI.DESCRIZIONEAGG}
ELSE
{RIGHEDOCUMENTI.DESCRIZIONEART}
对于这最后一个代码我有这个结构: TESTEDOCUMENTI.CODLINGUA与所有其他表格一样是数字。所以对于英语我来说&#34; 1&#34;默认我是&#34; 0&#34; DESCRARTICOLI.DESCRIZIONEAGG是翻译,所以在DESCRARTICOLI 我是CODART CODLINGUA DESCRARTICOLI(文章代码,语言代码,文章翻译说明) RIGHEDOCUMENTI.DESCRIZIONEART是我在ERP中看到的标准意大利语描述。所以我有不同的专栏,包括IDRIGA CODART DESCRIZIONEART(行ID,商品代码,意大利语言描述) 然后我在TESTEDOCUMENTI表中包含列之间的语言CODLINGUA。此表具有单个文档的常规设置。 因此,在我的Cristal Report表设置中,我将3个表RIGHEDOCUMENTI TESTEDOCUMENTI和DESCRARTICOLI,特别是TESTEDOCUMENTI.CODLINGUA与DESCRARTICOLI.CODLINGUA和RIGHEDOCUMENTI.CODART与DESCRARTICOLI.CODART相关联。
如果翻译未存储在erp中的文章中,则此条款代码的DESCRARTICOLI.DESCRIZIONEAGG不存在。例如。如果我的CODART是&#34; abg&#34;在RIGHEDOCUMENTI我是CODART&#34; abg&#34; DESCRIZIONEART&#34; ciao&#34;。然后在DESCRARTICOLI我CODART&#34; abg&#34; CODLINGUA&#34; 1&#34; DESCRIZIONEAGG&#34; hI&#34;。如果没有存储翻译,则DESCRARTICOLI中的行不存在。
所以我需要验证TESTEDOCUMENTI.CODLINGUA是否与&#34; 0&#34;默认语言,但这还不够,因为我的大部分文章都没有存储翻译。所以我需要展示,意大利语,或者一条简单的消息告诉我&#34;没有翻译存储&#34;。我也尝试过这条消息而不是RIGHEDOCUMENTI.DESCRIZIONEART,但它并没有出现。
另一个奇怪的事情是,在我的文档中,我也在同一行,在报告的单独字段中,CODEART,MEASURES,PRICE。如果我直接放入RIGHEDOCUMENTI.DESCRIZIONEART而不使用if语句,我会看到所有这些字段。我把if语句放在我看不到其他领域......
似乎第一个认为它去阅读翻译表DESCRARTICOLI,它没有回来阅读原始的,所以通过线结束cicle,而不读取存储在RIGHEDOCUMENTI表中的所有参数,包含不会出现在报告中的所有数据。
我希望现在更清楚了。 谢谢!