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

How to use BY keyword correctly in FOR EACH

我想按 Field4 降序浏览记录,但是当我输入代码 BY mybuffer.Field4 DESCENDING 时,出现错误

After "Field4 DESCENDING" not understandable (247) [translated].

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.

我做错了什么?

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

按此顺序使用:

  • 使用索引
  • 无锁
  • 通过

错误是 USE-INDEX "After field 4 descending" 的位置。就像错误信息所说的那样。

正确的语法是:

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

  display customer.

end.

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