如何从相同的多个记录中获取一个记录?

时间:2019-04-05 06:03:20

标签: openedge progress-4gl

您好,我编写了一个查询,该查询需要在下拉框中显示数据。让我分享我的查询内容

DEFINE TEMP-TABLE tt_seq_report.
       FIELD tt_seq_report.neutral_part_obj            AS DECIMAL
       FIELD tt_seq_report.patt_id                     AS CHARACTER
       FIELD tt_seq_report.npai_info2                  AS CHARACTER.

    EMPTY TEMP-TABLE tt_seq_report.

    FOR EACH gdmf_neutral_part NO-LOCK :
        FIND FIRST gdcf_part_type WHERE gdcf_part_type.part_type_obj EQ gdmf_neutral_part.part_type_obj NO-LOCK NO-ERROR.
        CREATE tt_seq_report.
        ASSIGN
        tt_seq_report.neutral_part_obj          = gdmf_neutral_part.neutral_part_obj 
        tt_seq_report.patt_id                   = gdcf_part_type.patt_id WHEN AVAILABLE gdcf_part_type 
        tt_seq_report.npai_info2                = gdmf_neutral_part.npai_info2.


    END. 

/* Written in window main block */

    FOR EACH tt_seq_report NO-LOCK :
        coCombo-2:ADD-LAST(tt_seq_report.patt_id).
    END.    

    FOR EACH tt_seq_report NO-LOCK :
        coCombo-3:ADD-LAST(tt_seq_report.npai_info2).
    END.
/*
If you see tt_seq_report.patt_id and tt_seq_report.npai_info2 data  is
i.e tt_seq_report.patt_id    -BFA 
    tt_seq_report.npai_info2 -23 
    tt_seq_report.patt_id    -BFA (same id)
    tt_seq_report.npai_info2 -24
    tt_seq_report.patt_id    -SS
    tt_seq_report.npai_info2 -23 
    tt_seq_report.patt_id    -SS  (same id)
    tt_seq_report.npai_info2 -24
    tt_seq_report.patt_id    -ABS
    tt_seq_report.npai_info2 -23 
    tt_seq_report.patt_id    -ABS (same id)
    tt_seq_report.npai_info2 -24
and so on. 
*/

因此,这里的tt_seq_report.patt_id对于一组记录是相同的,但是tt_seq_report.npai_info2对于每条记录都不相同。如果有tt_seq_report.patt_id仅是BFA,SS,ABS,但它有很多,我可以使用where条件。

如果运行此窗口,则可以在下拉框中获得多个相同的tt_seq_report.patt_id。

即,一旦我们选择下拉框,显示记录如下 CustID(保管箱的标签名称)值(保管箱的标签名称)

BFA 23 BFA 24 SS 23 SS 24 ABS 23 ABS 24

但是我的预期输出应该是

CustID(保管箱的标签名称)值(保管箱的标签名称)

BFA 23                                   24

SS 23                                   24

ABS 23                                   24

请帮助解决此情况。谢谢。

1 个答案:

答案 0 :(得分:0)

尝试一下

FOR EACH tt_seq_report NO-LOCK :
    If lookup(tt_seq_report.patt_id, ccombo2:list-items) = 0 then
        coCombo-2:ADD-LAST(tt_seq_report.patt_id).
END.    

我不知道您的范围,我正在移动设备上进行此操作,因此您可能需要将其更改为第{&frame-name)帧中的列表项或您的真实框架名称(如果不是{&frame-name) }。

编辑:由于您要求替代方法,因此您也可以这样做:

FOR EACH tt_seq_report NO-LOCK 
         BREAK BY tt_seq_report.patt_id:
    If first-of(tt_Seq_report.patt_id) then
        coCombo-2:ADD-LAST(tt_seq_report.patt_id).
END.