如何在FOR EACH中正确使用BY关键字

时间:2017-05-19 12:07:57

标签: progress-4gl openedge

我希望Field4按降序查看记录,但是当我输入代码BY mybuffer.Field4 DESCENDING时,我收到错误

  

“Field4 DESCENDING”之后不可理解(247)[翻译]。

FOR EACH mybuffer 
    WHERE mybuffer.Field1 = value1
    AND   mybuffer.Field2 = value2
    AND   mybuffer.Field3 >= value3
    BY    mybuffer.Field4 DESCENDING
    USE-INDEX myindex
    NO-LOCK:

    /* do something */
END.

我做错了什么?

2 个答案:

答案 0 :(得分:1)

虽然我不确定USE-INDEX和BY的组合是否聪明。但是你的问题很可能是选项的顺序。

按此顺序使用:

  • USE-INDEX
  • NO-LOCK
  • BY

答案 1 :(得分:1)

错误是USE-INDEX“在字段4降序后”的位置。就像错误信息所说的那样。

正确的语法是:

for each customer no-lock use-index cust-num
  where sales-rep = "BBB"
  by city:

  display customer.

end.

FWIW在FOR EACH循环中同时使用USE-INDEX并不太可能是一个好主意,并且将它与BY组合起来的可能性更小。如果允许,编译器可能会选择更好的索引(或索引复数)。