2016-08-17 6 views
0

Ich habe ein sehr seltsames Problem und ich hoffe wirklich, dass Sie alle mir sagen können, wie ich dumm bin und warum das passiert.Unerklärliche Änderung in Daten in Anfrage/Antwort

Ich habe eine mobile App, die ich mit dem Telerik Appbuilder erstelle. Das Backend ist alles auf OpenEdge 11.6 geschrieben und ich benutze den Pacific App Server für OE, um alles zu bedienen. Ich benutze das JSDO auch, um mit meinen Daten auf der Klientenseite zu interagieren.

Aus irgendeinem Grund, wenn ich jsdo.assign() aufrufen und senden über und Objekt der Daten zu aktualisieren, werden alle Felder außer einem aktualisiert. Es ist das einzige Feld, das als dezimaler Datentyp definiert ist. Es sieht so aus, als ob die Daten als Dezimalzahl gesendet werden, aber irgendwo entlang der Linie ändert sich etwas und es sieht so aus, als ob es in eine ganze Zahl verwandelt wird oder zumindest etwas, was OpenEdge nicht mag.

Meine Anfrage Nutzlast sieht wie folgt aus (TEMP der säumige Feld):

Request

Meine Antwort wie folgt aussieht:

Response

Was geschieht? Was könnte sich in meine Daten einmischen? Ich weiß wirklich nicht, wo ich anfangen soll.

Vielen Dank im Voraus!

+0

Ihre Anfrage und Antwort Screenshots sind die gleichen – peerbolte

+0

Sorry, das ist jetzt behoben. Obwohl sie immer noch fast genau gleich aussehen. Request zeigt TEMP als 15.1 und Response als 15. – DevonOsh

+1

Es scheint mir, dass etwas im Backend die Nummer abrundet. Gibt es eine Chance, dass Sie herausfinden könnten, was mit der Temperatur im Backend gemacht wird (wenn überhaupt?) Überprüfen Sie die Eingangs- (und Ausgangs-) Parameter. Wenn Sie eine Dezimalzahl an einen Integer-Parameter in Progress übergeben, erhalten Sie keinen Fehler, es wird implizit konvertiert. Oder eine Funktion könnte das Rundungsergebnis auf Null dezimieren. Direkt von meinem Kopf. Wie gesagt, ich würde gerne die Methoden und Parameter und Berechnungen sehen, die TEMP betreffen. – bupereira

Antwort

1

Das Problem war mit meiner Temp-Tabelle Definition, da es nicht die Struktur der Tabelle widerspiegelte. Ursprünglich sah mein Code wie folgt aus:

DEFINE TEMP-TABLE ttWHS_TEMP_REPORT BEFORE-TABLE bttWHS_TEMP_REPORT 
FIELD LOCATION_ID AS INTEGER INITIAL "0" LABEL "Location_Id" 
FIELD LOCATION_NAME AS CHARACTER LABEL "Location_Name" 
FIELD TEMP AS DECIMAL INITIAL "0" LABEL "Temp" 
FIELD IN_RANGE AS LOGICAL INITIAL "no" LABEL "In_Range" 
FIELD EMPLOYEE AS CHARACTER LABEL "Employee" 
FIELD STAMP_DT AS DATE INITIAL "?" LABEL "Stamp_DT" 
FIELD STAMP_TM AS CHARACTER LABEL "Stamp_TM" 
FIELD REPORT_ID AS INTEGER INITIAL "0" LABEL "?". 

ich es einfach geändert wie folgt aussehen:

DEFINE TEMP-TABLE ttWHS_TEMP_REPORT BEFORE-TABLE bttWHS_TEMP_REPORT 
FIELD LOCATION_ID AS INTEGER INITIAL "0" LABEL "Location_Id" 
FIELD LOCATION_NAME AS CHARACTER LABEL "Location_Name" 
FIELD IN_RANGE AS LOGICAL INITIAL "no" LABEL "In_Range" 
FIELD EMPLOYEE AS CHARACTER LABEL "Employee" 
FIELD STAMP_DT AS DATE INITIAL "?" LABEL "Stamp_DT" 
FIELD STAMP_TM AS CHARACTER LABEL "Stamp_TM" 
FIELD REPORT_ID AS INTEGER INITIAL "0" LABEL "?" 
FIELD TEMP AS DECIMAL INITIAL "0" LABEL "Temp". 

Ich hatte Änderungen an meinem Tisch gemacht, nachdem die temp-Tabelle definiert, und ich wusste nicht, Genug über OpenEdge, um zu erkennen, dass die Reihenfolge der in der temporären Tabelle definierten Felder wichtig ist.

+0

Freut mich zu hören, dass Sie es behoben haben. In Zukunft wird die Definition der temporären Tabelle als gute Methode in ein Include umgewandelt und sowohl in der Vorder- als auch in der Rückseite instanziiert. Auf diese Weise stellen Sie sicher, dass die Signaturen immer übereinstimmen. – bupereira

Verwandte Themen