2011-10-07 35 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