【问题标题】:How can I get one record from same multiple records?如何从相同的多条记录中获取一条记录?
【发布时间】:2019-04-05 06:03:20
【问题描述】:

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

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 is BFA,SS,ABS only 但它有很多,我可以使用 where 条件。

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

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

博鳌亚洲论坛 23 博鳌亚洲论坛 24 SS 23 SS 24 ABS 23 ABS 24

但我的预期输出应该是

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

博鳌亚洲论坛 23 24

SS 23 24

ABS 23 24

请帮助解决这个问题。谢谢。

【问题讨论】:

  • 请问我的问题可以得到答案吗?

标签: openedge progress-4gl


【解决方案1】:

试试这个

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.    

【讨论】:

  • 我执行了这段代码,但没有填充任何值。你能告诉我另一种方式吗?
  • 执行此操作时,您确定 tt_seq_report 中有数据吗?我刚刚在这里测试了它,它可以工作。将此消息放在 FOR EACH 之前:消息 temp-table tt_seq_report:has-records view-as alert-box。消息说什么?
  • 哦,您可以将两个组合人口放在相同的位置。无需重复两次。
  • 非常感谢先生......它的工作速度就像闪电一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
相关资源
最近更新 更多