問題描述:
查閱了QlikView的help後知道QlikView的循環文法如下面Code所示:
LET vTest1 = 1;
LET vTest2 = 30;
DO WHILE (vTest1 < $(vTest2))
LET vTest1 = $(vTest1) + 1;
LOOP
可是令人不解的是為何把DO WHILE (vTest1 < $(vTest2))替換成下面的方式後就變成死循環了:
DO WHILE ($(vTest1) < $(vTest2))。
Google了很多次,隻是說在while條件隻會被編譯一次,而循環中的所有值都會在每一次循環中都被解析。
原文是這樣的:Each condition is interpreted only the first time it is encountered but is evaluated for every time it encountered in the loop.
是以上面的條件就變成這樣 DO WHILE (1 < 30)一直成立。
解決方法:
1. 在while條件裡面不使用dollar sign,像這樣DO WHILE (vTest1 < $(vTest2));
2. 在loop(循環)語句中使用EXIT DO WHEN如下:
LET vTest1 = 1;
LET vTest2 = 30;
DO WHILE ($(vTest1) < $(vTest2))
LET vTest1 = $(vTest1) + 1;
EXIT DO WHEN ($(vTest1) >= $(vTest2));
LOOP
疑問:
為何QklikView隻會對條件編譯一次?