我有一个非常奇怪的问题,我真的希望你们都可以告诉我我是多么愚蠢以及为什么会这样。
我有一个移动应用程序,我正在使用Telerik Appbuilder构建。后端全部写在OpenEdge 11.6上,我使用Pacific App Server for OE来提供服务。我也在使用JSDO与客户端的数据进行交互。
出于某种原因,当我调用jsdo.assign()并发送数据对象以进行更新时,除了一个字段外,所有字段都会更新。它是唯一定义为十进制数据类型的字段。看起来数据是以十进制的形式发送的,但是在某些地方,某些东西发生了变化,看起来变成了一个整数,或者至少是OpenEdge不喜欢的东西。
我的请求有效负载如下所示(TEMP是违规字段):
我的回答如下:
发生了什么事?什么可能干涉我的数据?我真的不知道从哪里开始。
提前谢谢!
答案 0 :(得分:1)
问题在于我的临时表定义,因为它没有反映表的结构。最初,我的代码看起来像这样:
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 "?".
我只是把它改成这样:
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".
我在定义了临时表之后对表进行了更改,而我对OpenEdge的了解不足以意识到临时表中定义的字段顺序很重要。