2011-10-07 34 views

回答

6

如果您正在使用4GL,您可能還想使用OPEN QUERY和MAX-ROWS來獲得您所期望的結果。下面顯示了一個傳統的用於與計數器,然後用MAX-行的查詢中的每個循環:

define variable i as integer no-undo. 
define frame a with 10 down. 

for each customer no-lock break by name: 
    i = i + 1. 
    display i custNum name discount. 
    if i >= 5 then leave. 
end. 

define query q for customer scrolling. 

open query q for each customer no-lock break by name max-rows 5. 

do i = 1 to 5 with frame a: 
    get next q. 
    display i custNum name discount. 
end. 
6

如果您使用的是SQL-92的發動機則是這樣的:

SELECT TOP 100 FROM pub.customer;

應該工作得很好。

如果您使用4GL引擎,那麼您不應該嘗試將SQL與4GL混合。它只會導致痛苦,苦難和痛苦。 4GL不是SQL。由於營銷的原因,早在很久以前,就有一些SQL-89語句被放入4GL中。試圖使用它們會導致嚴重的情緒創傷。你被警告了。

+0

不幸的是,我只能給你1 upvote。你的話語完全描述了我父親的經歷! – profimedica

-1

DEFINE量I as INTEGER NO-UNDO。

爲每個客戶NO-LOCK寬度爲320:

ASSIGN i = i + 1. 

如果我< = 100則 DISP CustNum地址平衡市聯繫 國家CREDITLIMIT折扣
姓名電話POSTALCODE SalesRep的國家條款。

END。

+2

不是一個好的解決方案。如果您有一百萬個客戶記錄,那麼在您顯示前100個記錄後,這個記錄將繼續通過其他999,900個記錄。 – TheDrooper