如何使用 IF ELSE IF in put unformatted in Progress?
How to use IF ELSE IF in put unformatted in Progress?
我的程序有问题,如果某个数据库字段具有特定值,我需要输出不同的字符串。
假设我有一个名为 TestDB
的数据库,其中包含以下字段 Name
、Age
、Currency
我正在将数据输出到 .csv 文件中,因此我的公司为此使用了很多 put unformatted
语句。
“输出”部分看起来像这样:
put unformatted
TestDB.Name ';'
TestDB.Age ';'
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 ?
skip.
这些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
.
我的程序有问题,如果某个数据库字段具有特定值,我需要输出不同的字符串。
假设我有一个名为 TestDB
的数据库,其中包含以下字段 Name
、Age
、Currency
我正在将数据输出到 .csv 文件中,因此我的公司为此使用了很多 put unformatted
语句。
“输出”部分看起来像这样:
put unformatted
TestDB.Name ';'
TestDB.Age ';'
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 ?
skip.
这些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
.