Utilizando Critérios em Consultas loadRecords

Quando temos parâmetros variáveis, como é o caso da expressão aqui usada, devemos colocar um '?' onde o valor do parâmetro será injetado. Para cada '?' na expressão devemos ter um elemento 'parameter'. Os possíveis valores para o atributo 'type' são:

  • D = Data sem horário
  • H = Data com horário (no seguinte formato: DD/MM/AAAA HH:MM:SS)
  • F = Número decimal (decimal separado por '.')
  • I = Número inteiro
  • S = Texto

IMPORTANTE: Sempre usar parâmetro para critérios do tipo data, pois colocar a data direto no SQL pode não funcionar corretamente devido ao charset, formato e tipo do banco de dados.

Segue exemplo utilizando filtro com parâmetros


URL de chamada: https://api.sankhya.com.br/gateway/v1/mge/service.sbr?serviceName=CRUDServiceProvider.loadRecords&outputType=json

Corpo de requisição
{
    "serviceName": "CRUDServiceProvider.loadRecords",
    "requestBody": {
        "dataSet": {
            "rootEntity": "Produto",
            "includePresentationFields": "N",
            "tryJoinedFields":"true",
            "parallelLoader":"true",
            "offsetPage": "0",
            "criteria": {
                "expression": {
                  "$": "CODPROD IN ( ?, ? )"
                },
                "parameter":
                    [
                        {
                            "$": "1",
                            "type": "I"
                        },
                        {
                            "$": "2",
                            "type": "I"
                        }
                    ]
            },
            "entity": {
                "fieldset": {
                    "list": "CODPROD, DESCRPROD"
                }
            }
        }
    }
}


Este exemplo retorna os produtos com código 1 e 2. A seguir um exemplo de utilização com cada tipo de parâmetro, focando na tag “criteria” onde a mudança é necessária:

Aplicando filtro com número inteiro:

...
            "criteria": {
                "expression": {
                  "$": "NUNOTA = ?"
                },
                "parameter": [
                    {
                        "$": "9120",
                        "type": "I"
                    }
                ]
            },
...


Aplicando filtro com número inteiro utilizando IN:

...
            "criteria": {
                "expression": {
                  "$": "NUNOTA IN (?, ?, ?)"
                },
                "parameter": [
                    {
                        "$": "9120",
                        "type": "I"
                    },
                    {
                        "$": "9141",
                        "type": "I"
                    },
                    {
                        "$": "9159",
                        "type": "I"
                    }
                ]
            },
...


Aplicando filtro com data e hora:

...
            "criteria": {
                "expression": {
                  "$": "DTFATUR >= ?"
                },
                "parameter": [
                    {
                        "$": "20/05/2022 09:31:43",
                        "type": "H"
                    }
                ]
            },
...


Aplicando filtro entre datas:

...
            "criteria": {
                "expression": {
                  "$": "DHBAIXA IS NULL AND DTVENC BETWEEN ? AND ?"
                },
                "parameter": [
                    {
                        "$": "01/05/2022",
                        "type": "D"
                    },
                    {
                        "$": "31/05/2022",
                        "type": "D"
                    }
                ]
            },
...


Aplicando filtro com texto:

...
            "criteria": {
                "expression": {
                  "$": "USOPROD = ? AND DESCRPROD LIKE '%?%'"
                },
                "parameter": [
                    {
                        "$": "V",
                        "type": "S"
                    },
                    {
                        "$": "CHEVE",
                        "type": "S"
                    }
                ]
            },
...
Language
Click Try It! to start a request and see the response here!