【发布时间】:2016-04-26 19:40:59
【问题描述】:
我对 ABL 很陌生(我是法国人,所以请原谅我的英语),所以我需要你的帮助。 我想知道如何在 OPEN QUERY 中使用 BREAK BY。
这是我的工作:
define query Q-REQ for
ENT_RCP_FRN,
LIG_RCP_FRN,
CONSO_UNV_MDIM,
LIG_DOC_TRS,
ENT_DOC_TRS scrolling.
open query Q-REQ for
each ENT_RCP_FRN no-lock
where ENT_RCP_FRN.STO-c-CodeDes = "DRET",
each LIG_RCP_FRN no-lock break by LIG_RCP_FRN.SKU-c-cod
where LIG_RCP_FRN.SOU-c-Cod = ENT_RCP_FRN.SOU-c-Cod
and LIG_RCP_FRN.ERF-c-NumRcpFrn = ENT_RCP_FRN.ERF-c-NumRcpFrn,
each CONSO_UNV_MDIM no-lock
where CONSO_UNV_MDIM.UMA-c-Code = "8B6A9/0001354"
and CUMD-c-LstCleCumConso = LIG_RCP_FRN.SKU-c-cod,
each LIG_DOC_TRS no-lock LEFT OUTER-JOIN
where LIG_DOC_TRS.SKU-c-Cod = LIG_RCP_FRN.SKU-c-Cod,
each ENT_DOC_TRS no-lock left outer-join
where ENT_DOC_TRS.SOU-c-Cod = LIG_DOC_TRS.SOU-c-Cod
and ENT_DOC_TRS.EDT-c-NumDocTrs = LIG_DOC_TRS.EDT-c-NumDocTrs
and ENT_DOC_TRS.TR-c-CodeCatDoc = "BT"
and ENT_DOC_TRS.STO-c-CodeOri = "DRET"
and ENT_DOC_TRS.STO-c-CodeDes = "DWHO".
repeat :
get next Q-REQ.
if not available ENT_RCP_FRN then leave.
end.
我在以下语句中收到错误:
each LIG_RCP_FRN no-lock break by LIG_RCP_FRN.SKU-c-cod
where LIG_RCP_FRN.SOU-c-Cod = ENT_RCP_FRN.SOU-c-Cod
and LIG_RCP_FRN.ERF-c-NumRcpFrn = ENT_RCP_FRN.ERF-c-NumRcpFrn,
无法理解后:“LIG_RCP_FRN.SKU-c-cod”(我的错误是法语,但它是错误 247):
247** L'expression après : "LIG_RCP_FRN.SKU-c-cod" est incomprehensible。 (247)
我想做的是能够对表 LIG_RCP_FRN 中的一列求和,当 SKU-c-Cod 更改时中断。
我尝试在出现此错误后删除所有语句,但也没有用。
如果您需要更多信息,请询问。 Openedge 进度 10.2A
感谢您的帮助, 科伦丁
PS:不可能在帖子中说“嗨”??
【问题讨论】:
-
根据手册(尽管是 v9.1) - 您可以在打开的查询中使用“BY”对查询进行排序,但不能使用 break by。如果要使用“BREAK BY”,则需要使用 FOR EACH 循环。
-
@Screwtape 这不正确,至少在以后的版本中不正确。
-
那很好。目前我无法测试超过 v9。在 FOR EACH 中,手册暗示 BREAK BY 应该是所有记录短语之后,所以也许只是将它移动到查询的末尾将在 OE10 中工作?只是猜测。
标签: progress-4gl openedge