HT
Consulta SQL Server
- <?php
- Estou tentando fazer uma consulta:
- $repository = new TRepository('ViewCliente');
- $criteria = new TCriteria();
- $criteria->add(new TFilter('Cgc_Cpf', 'IN', $cnpj));
- $criteria->add(new TFilter('Cod_Estabe', '=', 0));
- $objects = $repository->load($criteria, FALSE);
- $cnpj -> é um array de string
- Esta me retornando:
- Debug: 2020-03-17 16:57:36 - SELECT Codigo, Razao_Social, Razao_Cnpj, Cgc_Cpf, Fantasia, Endereco, Cod_Estado, Cod_Cidade, Cod_Bairro, Fone1, Email, Licenca_Saude, Val_LicSau, Limite_Credito, Total_Debito, Cod_Vendedor, Bloqueado, Cod_Estabe, Cod_Transp, Cod_GrpCli, Num_Anvisa, Val_Anvisa, Num_CerReg, Val_CerReg, Num_AlvFun, Val_AlvFun, Bairro, Cidade, Numero, Complemento FROM v_sgi_cliente WHERE (Cgc_Cpf IN (08401713000179) AND Cod_Estabe = 0)
- <br>{"status":"error","data":"SQLSTATE[22003]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Erro de estouro aritm\u00e9tico ao converter varchar no tipo de dados numeric."}
- Porque o cnpj não esta vindo entre aspas no IN.
- Alguém sabe como resolver esse problema?.
- Sql server 2017.
- ?>
Boa noite parceiro!
O campo CNPJ deve ser String, portanto, dever ser passado entre aspas simples ('cnpj')...
verifique aí.
Espero ter ajudado.
O cnpj é uma string.
O framework coloca as aspas quando verifica que é uma string. Quando coloco as aspas e verifico o log o framework coloca duplicado ficando:
... IN (''1111111111111'') e quando coloco sem as aspas fica IN (1111111111111111).
já tentei (string), já tentei strval.
Use o identificador "NOESC:":
Sim Herbety Thiago, mas, no dump da sua consulta o cnpj NÃO ESTA ESCAPADO POR ASPAS SIMPLES.
Observe aí.
Americo Carvalho, o problema é justamente esse. O sistema não está identificando como string e colocando as aspas.
Nataniel Rabaioli, vou testar neste formato.
Nataniel Rabaioli, deu certinho.
Esse erro é do framework que não reconhece como string?.
Qual a funcionalidade no NOESC fora essa que passou?.
Na verdade não entendo como erro, é característica do framework não usar aspas para dados numéricos.
O NOESC serve justamente para os casos em que os padrões do framework não atendem. Usando o NOESC o framework desconsidera qualquer tipo de formatação, deixando exatamente como definido no filtro após o NOESC.
Mas qualquer número ele entende como numérico?. Quando damos var_damp() o dado está como string e tentei usar o strval como o Cast.