如何在进行中放入未格式化的IF ELSE IF



我在一个程序中遇到问题,如果某个数据库字段有特定的值,我需要输出不同的字符串。

假设我有一个名为TestDB的数据库,包含以下字段NameAgeCurrency

我将数据输出到.csv文件中,因此我的公司使用了大量的put unformatted语句。

";输出";部分看起来像这样:

放入未格式化的

TestDB.Name';'
TestDB.Age';'
如果TestDB.Currency=1,则为'Euro',否则为?';'
如果TestDB.Currency=2,则为"美元",否则为?";">
如果TestDB.Currency=3,则'Kuna'其他?';'
如果TestDB.Currency=4,则为"Pound",否则为
跳过。

这些if's的问题是,如果Currency为1,它将输出欧元,但对于其他if's,它仍然输出欧元?.csv文件中。我希望这些if的结构像:if... else if... else if... else因此,如果第一个if是正确的,那么将跳过所有其他if's

我尝试了多种方法,但每次都失败了。有人能帮帮我吗?

我想你正在寻找类似的东西

if TestDB.Currency = 1 then 'Euro' 
else if TestDB.Currency = 2 then 'Dollar' 
else if TestDB.Currency = 3 then 'Kuna'
else if TestDB.Currency = 4 then 'Pound' 
else ?

但是CASE语句在这里可能更有效

case TestDB.Currency:
when 1 then curName = 'Euro'.
when 2 then curName = 'Dollar'.
when 3 then curName = 'Kona'.
when 4 then curName = 'Pound'.
otherwise curName = 'unknown'.
end case.
put unformatted curName skip.

由于我怀疑是否有人希望将1、2、3、4视为货币,您可能已经有了执行此转换的functionmethod

class env.currency:
method static character getName (
i_icurrency as integer
):
case i_icurrency:
when 1 then return 'Euro'.
when 2 then return 'Dollar'.
when 3 then return 'Kuna'.
when 4 then return 'Pound'.
end case.
return 'unknown'.
end method.
end class.

使用中:

put unformatted
TestDB.Name ';'
TestDB.Age ';'
env.currency:getName( TestDB.Currency ) ';'
skip
.

最新更新