Consulta SQL Server ...
HT
Consulta SQL Server  

 
  1. <?php
  2. Estou tentando fazer uma consulta:
  3. $repository = new TRepository('ViewCliente');
  4. $criteria = new TCriteria();
  5. $criteria->add(new TFilter('Cgc_Cpf', 'IN', $cnpj));
  6. $criteria->add(new TFilter('Cod_Estabe', '=', 0));
  7. $objects = $repository->load($criteria, FALSE);
  8. $cnpj -> é um array de string
  9. Esta me retornando:
  10. 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)
  11. <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."}
  12. Porque o cnpj não esta vindo entre aspas no IN.
  13. Alguém sabe como resolver esse problema?.
  14. Sql server 2017.
  15. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (9)


AC

Boa noite parceiro!

O campo CNPJ deve ser String, portanto, dever ser passado entre aspas simples ('cnpj')...
verifique aí.
Espero ter ajudado.
HT

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.

NR

Use o identificador "NOESC:":
 
  1. <?php
  2. $crit->add(new TFilter('id','in',"NOESC:('".implode("','",$cnpj)."')"));
  3. ?>
AC

Sim Herbety Thiago, mas, no dump da sua consulta o cnpj NÃO ESTA ESCAPADO POR ASPAS SIMPLES.
Observe aí.
HT

Americo Carvalho, o problema é justamente esse. O sistema não está identificando como string e colocando as aspas.
HT

Nataniel Rabaioli, vou testar neste formato.
HT

Nataniel Rabaioli, deu certinho.
Esse erro é do framework que não reconhece como string?.
Qual a funcionalidade no NOESC fora essa que passou?.
NR

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.
HT

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.