2017-03-22 1 views
0
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). 

J'ai écrit cette requête et renvoie les données comme celui-ciOpenEdge Progress 4GL Requête renvoie (MISSING) après% signe

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

Bien que je crois (d'utiliser une requête SQL) que les données doivent être

0.4%45NET46 
0.4% 45 DAYS NET 46 

Je fais une hypothèse que le% est probablement un caractère spécial (comme je l'ai rencontré des problèmes similaires dans le passé). J'ai essayé d'extraire toutes les données de la table, et j'obtiens le même résultat, (c.-à-d., Ne pas créer une table de temp et la peupler avec seulement les deux champs que je veux).

Des suggestions autour de ce problème?

Je suis encore très nouveau sur 4gl, donc la requête ci-dessus peut être terriblement fausse. Tous les commentaires et critiques sont les bienvenus.

Répondre

0

Je pense que si vous essayez ceci:

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

    display 
    payment_terms.terms_code 
    payment_terms.description 
    . 

END. 

Vous verrez ce que la requête retourne réellement. (WRITE-JSON ajoute une couche après la requête.) Vous découvrirez probablement que vos données contiennent quelque chose d'inattendu.

A mes yeux, le "%" ressemble plus à un formatage - les termes sont probablement 0.4%.

Vous semblez avoir quelques problèmes dans le contenu du champ de description. Ma conjecture est qu'il y avait une incompatibilité de page de code quand l'utilisateur a entré les données et qu'il y a du charabia dans le champ en conséquence.

+0

Je vais essayer. J'ai déjà rencontré ce problème auparavant, et j'ai dû tout analyser en une variable puis assigner cette variable à mon champ de table temporaire. –