我是ABL的新手(我是法国人,所以请原谅我的英语),所以我需要你的帮助。我想知道如何在打开的查询中使用中断。
我要做的是:
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‘表达式après:"LIG_RCP_FRN.SKU-c-cod“est incompréhensible。(247)
我想要做的是能够从表LIG_RCP_FRN中求和一列,当SKU发生变化时就会中断。
在这个错误之后,我试着删除所有的语句,但是这两个语句都不起作用。
如果你需要更多的信息,请询问。Openedge进度10.2A
谢谢你的帮助,科伦丁
PS:不可能在帖子里说“嗨”?
发布于 2016-04-26 11:08:20
这是一个非常简单的错误。您需要在查询的末尾放置"BREAK“选项。
另外,如果你发布了一些(可能是假的)临时表定义,这样就很容易复制和粘贴,这也是非常好的。
我根据查询在下面的代码中临时编写了一些表,它们只是为了使代码编译。
在查询中调用的FIRST-OF方法的工作方式如下:
查询:第一(级别) index:一个整数表达式,它指示按组中断,其中0是整个查询,1是第一个中断,2是第二个中断,依此类推。
如果你有BREAK BY fieldA BY fieldB
query:FIRST-OF(1)与BREAK BY fieldA和
query:FIRST-OF(2)与BREAK BY fieldB相关
还有LAST-OF(n)
/* Completely fake temp-tables that are here only to make the query work! */
DEFINE TEMP-TABLE ENT_RCP_FRN NO-UNDO
FIELD STO-c-CodeDes AS CHARACTER
FIELD SOU-c-Cod AS INTEGER
FIELD ERF-c-NumRcpFrn AS INTEGER.
DEFINE TEMP-TABLE LIG_RCP_FRN NO-UNDO
FIELD SOU-c-Cod AS INTEGER
FIELD ERF-c-NumRcpFrn AS INTEGER
FIELD SKU-c-cod AS INTEGER.
DEFINE TEMP-TABLE CONSO_UNV_MDIM NO-UNDO
FIELD UMA-c-Code AS CHARACTER
FIELD CUMD-c-LstCleCumConso AS INTEGER.
DEFINE TEMP-TABLE LIG_DOC_TRS NO-UNDO
FIELD SKU-c-Cod AS INTEGER
FIELD SOU-c-Cod AS INTEGER
FIELD EDT-c-NumDocTrs AS INTEGER.
DEFINE TEMP-TABLE ENT_DOC_TRS NO-UNDO
FIELD SOU-c-Cod AS INTEGER
FIELD EDT-c-NumDocTrs AS INTEGER
FIELD TR-c-CodeCatDoc AS CHARACTER
FIELD STO-c-CodeOri AS CHARACTER
FIELD STO-c-CodeDes AS CHARACTER.
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 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" BREAK BY LIG_RCP_FRN.SKU-c-cod.
REPEAT:
GET NEXT Q-REQ.
IF NOT AVAILABLE ENT_RCP_FRN THEN LEAVE.
IF QUERY q-req:FIRST-OF(1) THEN DO:
DISPLAY "First!".
END.
END.https://stackoverflow.com/questions/36861808
复制相似问题