我有以下代码,应使用Progress ABL执行简单的if-else语句。
即使无法找到子字符串“ UK ”,我也无法让程序到达ELSE语句。谁能看到我错过的东西:
FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404".
IF ttShipHead.AddrList Matches "*UK*" THEN
assign ttShipHead.CheckBox01 = (false).
ELSE
assign ttShipHead.CheckBox01 = (true).
答案 0 :(得分:1)
我建议您添加一些调试:
FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404" no-error.
message available( ttShipHead ).
pause.
message ttShipHead.AddrList ( ttShipHead.AddrList Matches "*UK*" ).
pause.
IF ttShipHead.AddrList Matches "*UK*" THEN
assign ttShipHead.CheckBox01 = (false).
ELSE
assign ttShipHead.CheckBox01 = (true).
message ttShipHead.Checkbox01.
pause.
这应该清楚地表明出了什么问题。
答案 1 :(得分:0)
我不太了解ABL。但我认为语法是 如果表达那么:工作。所以尝试添加一个DO:在你那之后
答案 2 :(得分:0)
如果屏幕上有关于未找到记录ttshiphead的消息,那么它根本不会运行IF语句。
通常情况下,FIND有一个“NO-ERROR”,后面跟着“IF AVAILABLE ttshiphead THEN”,如果需要的话。
答案 3 :(得分:0)
您的代码看起来是正确的。也许是一些小改动,以确保你有记录。
FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404" NO-ERROR.
IF AVAILABLE ttShipHead THEN
IF ttShipHead.AddrList MATCHES "*UK*":U THEN
assign ttShipHead.CheckBox01 = (false).
ELSE
assign ttShipHead.CheckBox01 = (true).
如果您想添加,则显示记录是否不可用。
FIND FIRST ttShipHead WHERE ttShipHead.ShipToCustCustID = "1404" NO-ERROR.
IF AVAILABLE ttShipHead THEN
IF ttShipHead.AddrList MATCHES "*UK*":U THEN
assign ttShipHead.CheckBox01 = (false).
ELSE
assign ttShipHead.CheckBox01 = (true).
ELSE
MESSAGE "NO RECORD FOUND".