天天看點

有關QlikView循環的疑惑

問題描述:

查閱了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隻會對條件編譯一次?

繼續閱讀