OpenEdge进展4GL查询%之后返回(丢失)

问题描述:

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). 

我写了这个查询,像这样OpenEdge进展4GL查询%之后返回(丢失)

[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仍然很陌生,所以上面的查询可能是非常错误的。所有评论和批评都是受欢迎的。

我怀疑如果你试试这个:

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%。

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

+0

我会试试看。我之前遇到过这个问题,并且必须将所有内容解析为一个变量,然后将该变量分配给我的临时表字段。 –