PureBasic
PureBasic
SugarCRM Filtering Records
See more SugarCRM Examples
Export records and filter.Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkRest::ckConnect(rest,"your.site.domain",443,1,1)
If success <> 1
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
ProcedureReturn
EndIf
CkRest::ckAddHeader(rest,"Cache-Control","no-cache")
CkRest::ckAddHeader(rest,"OAuth-Token","<access_token>")
; The following code creates the JSON request body.
; The JSON created by this code is shown below.
jsonReq.i = CkJsonObject::ckCreate()
If jsonReq.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(jsonReq,"filter[0].$or[0].name.$starts","A")
CkJsonObject::ckUpdateString(jsonReq,"filter[0].$or[1].name.$starts","b")
CkJsonObject::ckUpdateNumber(jsonReq,"max_num","2")
CkJsonObject::ckUpdateNumber(jsonReq,"offset","0")
CkJsonObject::ckUpdateString(jsonReq,"fields","id")
CkJsonObject::ckUpdateString(jsonReq,"order_by","date_entered")
CkJsonObject::ckUpdateBool(jsonReq,"favorites",0)
CkJsonObject::ckUpdateBool(jsonReq,"my_items",0)
; The JSON request body created by the above code:
; {
; "filter": [
; {
; "$or": [
; {
; "name": {
; "$starts": "A"
; }
; },
; {
; "name": {
; "$starts": "b"
; }
; }
; ]
; }
; ],
; "max_num": 2,
; "offset": 0,
; "fields": "id",
; "order_by": "date_entered",
; "favorites": false,
; "my_items": false
; }
sbReq.i = CkStringBuilder::ckCreate()
If sbReq.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckEmitSb(jsonReq,sbReq)
CkRest::ckAddHeader(rest,"Content-Type","application/json")
sbJson.i = CkStringBuilder::ckCreate()
If sbJson.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkRest::ckFullRequestSb(rest,"POST","/rest/v10/Accounts/filter",sbReq,sbJson)
If success <> 1
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(jsonReq)
CkStringBuilder::ckDispose(sbReq)
CkStringBuilder::ckDispose(sbJson)
ProcedureReturn
EndIf
If CkRest::ckResponseStatusCode(rest) <> 200
Debug "Received error response code: " + Str(CkRest::ckResponseStatusCode(rest))
Debug "Response body:"
Debug CkStringBuilder::ckGetAsString(sbJson)
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(jsonReq)
CkStringBuilder::ckDispose(sbReq)
CkStringBuilder::ckDispose(sbJson)
ProcedureReturn
EndIf
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoadSb(json,sbJson)
; The following code parses the JSON response.
; A sample JSON response is shown below the sample code.
next_offset.i
i.i
count_i.i
id.s
date_modified.s
v_module.s
next_offset = CkJsonObject::ckIntOf(json,"next_offset")
i = 0
count_i = CkJsonObject::ckSizeOfArray(json,"records")
While i < count_i
CkJsonObject::setCkI(json, i)
id = CkJsonObject::ckStringOf(json,"records[i].id")
date_modified = CkJsonObject::ckStringOf(json,"records[i].date_modified")
v_module = CkJsonObject::ckStringOf(json,"records[i]._module")
i = i + 1
Wend
; A sample JSON response body that is parsed by the above code:
; {
; "next_offset": 2,
; "records": [
; {
; "id": "f16760a4-3a52-f77d-1522-5703ca28925f",
; "date_modified": "2016-04-05T10:23:28-04:00",
; "_acl": {
; "fields": {}
; },
; "_module": "Accounts"
; },
; {
; "id": "ec409fbb-2b22-4f32-7fa1-5703caf78dc3",
; "date_modified": "2016-04-05T10:23:28-04:00",
; "_acl": {
; "fields": {}
; },
; "_module": "Accounts"
; }
; ]
; }
Debug "Example Completed."
CkRest::ckDispose(rest)
CkJsonObject::ckDispose(jsonReq)
CkStringBuilder::ckDispose(sbReq)
CkStringBuilder::ckDispose(sbJson)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure