首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进度ABL:在打开的查询中使用多个联接中断

进度ABL:在打开的查询中使用多个联接中断
EN

Stack Overflow用户
提问于 2016-04-26 10:09:26
回答 1查看 1.3K关注 0票数 2

我是ABL的新手(我是法国人,所以请原谅我的英语),所以我需要你的帮助。我想知道如何在打开的查询中使用中断。

我要做的是:

代码语言:javascript
复制
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.

以下语句出错:

代码语言:javascript
复制
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:不可能在帖子里说“嗨”?

EN

回答 1

Stack Overflow用户

发布于 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)

代码语言:javascript
复制
/* 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.
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36861808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档