%符号后,OpenEdge Progress 4GL Query返回(MISSING)

时间:2017-03-22 18:57:50

标签: progress-4gl openedge

DEFINE TEMP-TABLE tt_pay_terms NO-UNDO
            FIELD pt_terms_code LIKE payment_terms.terms_code
            FIELD pt_description LIKE payment_terms.description.
        DEFINE VARIABLE htt AS HANDLE NO-UNDO.
        htt = TEMP-TABLE tt_pay_terms:HANDLE.

        FOR EACH platte.payment_terms
        WHERE (
            active = true
            AND system_id = "000000"
        )
        NO-LOCK:
        CREATE tt_pay_terms.
        ASSIGN
            pt_terms_code = payment_terms.terms_code.
            pt_description = payment_terms.description.
        END.

        htt:WRITE-JSON("FILE", "/dev/stdout", FALSE).

我已编写此查询,并返回此类数据

[pt_terms_code] => 0.4%!N(MISSING)ET46
[pt_description] => 0.4%! (MISSING)DAYS NET 46

虽然我相信(使用SQL查询)数据应该是

0.4%45NET46 
0.4% 45 DAYS NET 46

我假设%可能是一些特殊的角色(因为我过去遇到过类似的问题)。我尝试从表中提取所有数据,并得到相同的结果(即,不创建临时表并使用我想要的所有两个字段填充它)。

有关此问题的任何建议吗?

我仍然对4gl很新,所以上面的查询可能非常错误。欢迎所有评论和批评。

1 个答案:

答案 0 :(得分:0)

我怀疑如果你试试这个:

FOR EACH platte.payment_terms NO-LOCK
   WHERE ( active = true AND system_id = "000000" ):

  display
    payment_terms.terms_code
    payment_terms.description
  .

END.

您将看到查询实际返回的内容。 (WRITE-JSON在查询后添加了一个图层。)您可能会发现您的数据包含意外的内容。

在我看来,“%”看起来更像是格式化 - 这些术语很可能是0.4%。

然后,您似乎在说明字段的内容中存在一些问题。我的猜测是,当用户输入数据时,代码页不匹配,结果字段中存在乱码。