Tcl
Tcl
SugarCRM Filtering Records
See more SugarCRM Examples
Export records and filter.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
set rest [new_CkRest]
set success [CkRest_Connect $rest "your.site.domain" 443 1 1]
if {$success != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkRest $rest
exit
}
CkRest_AddHeader $rest "Cache-Control" "no-cache"
CkRest_AddHeader $rest "OAuth-Token" "<access_token>"
# The following code creates the JSON request body.
# The JSON created by this code is shown below.
set jsonReq [new_CkJsonObject]
CkJsonObject_UpdateString $jsonReq "filter[0].$or[0].name.$starts" "A"
CkJsonObject_UpdateString $jsonReq "filter[0].$or[1].name.$starts" "b"
CkJsonObject_UpdateNumber $jsonReq "max_num" "2"
CkJsonObject_UpdateNumber $jsonReq "offset" "0"
CkJsonObject_UpdateString $jsonReq "fields" "id"
CkJsonObject_UpdateString $jsonReq "order_by" "date_entered"
CkJsonObject_UpdateBool $jsonReq "favorites" 0
CkJsonObject_UpdateBool $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
# }
set sbReq [new_CkStringBuilder]
CkJsonObject_EmitSb $jsonReq $sbReq
CkRest_AddHeader $rest "Content-Type" "application/json"
set sbJson [new_CkStringBuilder]
set success [CkRest_FullRequestSb $rest "POST" "/rest/v10/Accounts/filter" $sbReq $sbJson]
if {$success != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkRest $rest
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbReq
delete_CkStringBuilder $sbJson
exit
}
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
puts "Received error response code: [CkRest_get_ResponseStatusCode $rest]"
puts "Response body:"
puts [CkStringBuilder_getAsString $sbJson]
delete_CkRest $rest
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbReq
delete_CkStringBuilder $sbJson
exit
}
set json [new_CkJsonObject]
CkJsonObject_LoadSb $json $sbJson
# The following code parses the JSON response.
# A sample JSON response is shown below the sample code.
set next_offset [CkJsonObject_IntOf $json "next_offset"]
set i 0
set count_i [CkJsonObject_SizeOfArray $json "records"]
while {$i < $count_i} {
CkJsonObject_put_I $json $i
set id [CkJsonObject_stringOf $json "records[i].id"]
set date_modified [CkJsonObject_stringOf $json "records[i].date_modified"]
set v_module [CkJsonObject_stringOf $json "records[i]._module"]
set i [expr $i + 1]
}
# 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"
# }
# ]
# }
puts "Example Completed."
delete_CkRest $rest
delete_CkJsonObject $jsonReq
delete_CkStringBuilder $sbReq
delete_CkStringBuilder $sbJson
delete_CkJsonObject $json