Skip to main content
1-Visitor
June 23, 2017
Solved

Using the QueryDataTableEntries method prompt [" value "] not found

  • June 23, 2017
  • 8 replies
  • 7126 views

var values = Things["SearchMapDT"].CreateValues();

values.type = type; //NUMBER [Primary Key]

values.province = province; //STRING

values.customer = customer; //STRING

values.country = country; //STRING

values.city = city; //STRING

values.county = county; //STRIN

var query1 =

{

    "filters": {

        "type": "OR",

        "filters":[

            {

                "type":"EQ",

                "fieldName":"type",

                "value":type

            },

            {

                "type":"EQ",

                "fieldName":"province",

                "value":province

            },

            {

                "type":"EQ",

                "fieldName":"customer",

                "value":customer

            }

     ,

            {

                "type":"EQ",

                "fieldName":"country",

                "value":country

            }

     ,

            {

                "type":"EQ",

                "fieldName":"city",

                "value":city

            },

            {

                "type":"EQ",

                "fieldName":"county",

                "value":county

            }

        ]

    } 

}

var params = {

  maxItems: undefined /* NUMBER */,

  values: values /* INFOTABLE*/,

  query: query1 /* QUERY */,

  source: undefined /* STRING */,

  tags: undefined /* TAGS */

};

// result: INFOTABLE

var result = Things["SearchMapDT"].QueryDataTableEntries(params);

LOG MESSAGE:

[context: com.thingworx.webservices.context.HttpExecutionContext@40c66c25][message: Execution error in service script [SearchMapDT myquery] : Wrapped java.lang.RuntimeException: org.json.JSONException: JSONObject["value"] not found. Cause: org.json.JSONException: JSONObject["value"] not found.]

Best answer by liliu

Hi Mr. Guo,

For your case, I suggest using Data Filter widget.

BR,

Lily

8 replies

5-Regular Member
June 23, 2017

Hi Mr. Guo,

I don't think we shold query the data twice.

values or query one should be undefined. I suggest to set values to undefined.

var params = {

  maxItems: undefined /* NUMBER */,

  values: values /* INFOTABLE*/,

  query: query1 /* QUERY */,

  source: undefined /* STRING */,

  tags: undefined /* TAGS */

};

Best Regards,

Lily

1-Visitor
June 23, 2017

Actually, you need:

var values = Things["SearchMapDT"].CreateValues();


But you don't need to set any of the properties.


When you get to the params for the QueryDataTablleEntires you simply do:


var params = {

  values: values /* INFOTABLE*/,

  query: query /* QUERY */,

};

// result: INFOTABLE

var result = Things["SearchMapDT"].QueryDataTableEntries(params);


5-Regular Member
June 26, 2017

Hi Wayne,

Thanks for your suggestion. It works now.

Lily

liliu5-Regular MemberAnswer
5-Regular Member
June 26, 2017

Hi Mr. Guo,

For your case, I suggest using Data Filter widget.

BR,

Lily

1-Visitor
June 26, 2017

How is this the correct answer?  The data filter widget has nothing to do with correctly using the QueryDataTableEntries service.

5-Regular Member
June 27, 2017

Hi Wayne,

Mr. Guo wants to filter data table data with textbox values and customized service. It OK, but I suggest using DataFilter widget, which does not need customized service. It would be easier.

By binding data filter's query to the service QueryDataTableEntities's parameter query.;

Best Regards,

Lily