Sample code for 30+ languages & platforms
Tcl

SugarCRM Filtering Records

See more SugarCRM Examples

Export records and filter.

Chilkat Tcl Downloads

Tcl

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