Lançado Adianti Framework 8.1!
Clique aqui para saber mais
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($criteriaFALSE);
  8. $cnpj -> é um array de string
  9. Esta me retornando
  10. Debug2020-03-17 16:57:36 SELECT CodigoRazao_SocialRazao_CnpjCgc_CpfFantasiaEnderecoCod_EstadoCod_CidadeCod_BairroFone1EmailLicenca_SaudeVal_LicSauLimite_CreditoTotal_DebitoCod_VendedorBloqueadoCod_EstabeCod_TranspCod_GrpCliNum_AnvisaVal_AnvisaNum_CerRegVal_CerRegNum_AlvFunVal_AlvFunBairroCidadeNumeroComplemento 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.