2016-07-26 69 views
1

我在我的数据库中有3列:COL1,COL2和COL3。我希望把它们放在我的报告,但动态的,如:动态列结构

IF i = 3 THEN COL3 
ELSE IF i = 2 THEN COL2 
ELSE IF i = 1 THEN COL1 

所以结构取决于条件。所以有可能有类似以下的东西?

stringvar test:= COL; 
numbervar i = 3; 
{test + toText(i)} 

我想捕捉异常,如果列结构在未来发生变化。

+0

在公式中使用它.. –

回答

0

That's not exactly something Crystal Reports is well equipped for。没有好的方法来使用字符串来确定不使用if-else结构的情况下抓取哪个字段。

但是,如果将来添加了COL4,那么您仍然必须进入并更改报告,以便numbervar可以设置为4. Crystal没有好的方法来预测可能存在或不存在的列。因此,记住if-else语句是确定要抓取哪一列的最佳方法。虽然节省的复制粘贴一点点的时间,你可以编写代码的新线路的意见和激活他们在适当的时候对时间的:

IF i = 1 THEN {table.COL1} 
ELSE IF i = 2 {table.COL2} 
ELSE IF i = 3 {table.COL3} 
\\ ELSE IF i = 4 {table.COL4} 
\\ ELSE IF i = 5 {table.COL5} 
\\ ... 
+1

那是我把它第二个想法像这样,如果水晶不支持其他方式 – Simon

+0

是的,你会认为这将是一个支持的功能。 Crystal已经有很长时间了,需要支持很多遗留代码。良好的面向对象实践当时并不是那么重要。 – 4444

0

就像这样:

numbervar s:=0; 
if {Command_1.emp_number} = 1 then 

    s = 3 
else 

    s = 4; 

希望它可以帮助作为指导..