【问题标题】:if else statements for finding values from two different table用于从两个不同表中查找值的 if else 语句
【发布时间】:2021-02-07 14:38:09
【问题描述】:

我想匹配两个不同表格中的数字,如果在任何表格中找到它,它将显示它..

INPUT FROM VALUE("/mydirectory/test.csv").
REPEAT:

    IMPORT c.
    FOR EACH table1 NO-LOCK WHERE table1.ordernumber=c.

        IF AVAILABLE table1 THEN
            DISPLAY table1.ordernumber table1.orderdate.
        ELSE IF NOT AVAILABLE table1 THEN
            FIND FIRST table2 NO-LOCK WHERE table2.ordernumber=c.
        IF AVAILABLE table2 THEN
            DISPLAY table2.ordernumber table2.orderdate.

    END.

END.

到目前为止,我已经写了这么多,但它没有给出正确的结果。感谢在这方面的帮助。谢谢。

【问题讨论】:

    标签: openedge progress-4gl progress-db


    【解决方案1】:

    在 FOR EACH 中使用 IF AVAILABLE table1 没有任何意义,因为 FOR EACH 只迭代 table1 中的匹配记录。

    试试这个:

    INPUT FROM VALUE("/mydirectory/test.csv").
    
    REPEAT:
        IMPORT c.
    
        FIND table1 WHERE table1.ordernumber=c NO-LOCK NO-ERROR.
    
        IF AVAILABLE table1 THEN
            DISPLAY table1.ordernumber table1.orderdate.
        ELSE DO:
            /*IF NOT AVAILABLE table1 THEN*/
            FIND FIRST table2 WHERE table2.ordernumber=c NO-LOCK NO-ERROR.
    
            IF AVAILABLE table2 THEN
                DISPLAY table2.ordernumber table2.orderdate.
        END.
    END.
    

    在不知道您的表/索引的情况下,我只能猜测您是否需要进行唯一查找(当前代码)或将 FIRST 选项添加到您的 FIND 语句中。

    如果您希望显示 table2.ordernumber 和 table2.orderdate 来代替 table1 中的字段,您可以像这样更改第二个 DISPLAY 语句 - 使用占位符语法:

    DISPLAY table2.ordernumber @ table1.ordernumber 
            table2.orderdate @ table2.orderdate.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-04
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多