后面加上DO:
我有以下代码,应该使用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).
我建议您添加一些调试:
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.
我对ABL了解不多。但我认为语法是IF expression THEN DO: work。所以试着在THEN
如果屏幕上有一条关于没有找到recorttshiphead的消息,那么它根本没有运行If语句。
查找通常有一个"NO-ERROR",后面跟着一个"IF AVAILABLE ttshiphead THEN"。
您的代码看起来正确。也许做一些小改动,以确保你有记录。
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来显示如果记录不可用
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".