我在一个程序中遇到问题,如果某个数据库字段有特定的值,我需要输出不同的字符串。
假设我有一个名为TestDB
的数据库,包含以下字段Name
、Age
、Currency
我将数据输出到.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视为货币,您可能已经有了执行此转换的function
或method
。
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
.