Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Expandir
titleCOUNT field incorrect or syntax error | Campo COUNT incorreto ou erro de sintaxe

Explicação

Esse erro acontece quando é realizado Querys em SQL a comando do sistema e, algum campo utilizado na contagem, exemplo "Count(C6_QTDVEN)" possui algum símbolo de operação em SQL, desordenando o que o sistema entende como começo e fim dos comandos SQL, sejam as possíveis causas:

  • Algum campo utilizado na Query possuir os símbolos: < > ! ' = | + - * / %
  • O campo da Query não existir
  • Customizações de filtro


Tópicos de Análise (com tickets de exemplo)

Deck of Cards
startHiddenfalse
effectDuration0.5
idCusto Médio
effectTypehorizontal
loopCardstrue
Card
defaulttrue
id#18537428
label#18537428

Erro

Expandir
titleVer erro

Para ver o erro completo, abra o ticket: https://totvssuporte.zendesk.com/agent/tickets/18537428

Bloco de código
firstline1
titleTrecho
linenumberstrue
THREAD ERROR ([26024], systh, VLUP-ARKO-APP)   14/11/2023 09:42:08
: Error : 0 (07001) (RC=-1) - [Microsoft][ODBC Driver 17 for SQL Server]Campo COUNT incorreto ou erro de sintaxe
Error : 0 (00000) (RC=-1) - 
 ( From tODBCStatement::SqlBind )
Thread ID [16116]	User [Administrador]	IO [8429]	Tables [142]	MaxTables [143]	Comment [MATA410 - TCPIP - ThreadID(26024)]	SP [ ]	Traced [No]	SQLReplay [No]	InTran [Yes]	DBEnv [MSSQL/PROTHEUS_PRODUCAO_ARKO]	DBThread [(SPID 644,81,1229)]	Started [14/11/2023 09:35:52]	IP [127.0.0.1:1234]	IDLE [ ]	InTransact [89 s.]	Memory [0]	Running [ROP_QUERY2 for 0 s.]	RCV [719983]	SND [3180458]	TCBuild [20220303-20230623]	TCVersion [22.1.1.5]	ARCH [64]	OS [WINDOWS]	BUILD [RELEASE]	
 on MPSYSOPENQUERY(MPSYSOPENTABLES.PRW) 11/08/2023 16:29:12 line : 715


Tópicos de Análise

Expandir
title1 - Encontrar QUERY do erro

Quando ocorre esse erro, por trás há uma Query, vamos procurar pelas chamadas até encontrá-la, podemos dar "Ctrl + F" e buscar por "Query" ou "CQUERY".


Ao encontrar essa "CQUERY"

Bloco de código
firstline1
titleTrecho
linenumberstrue
Local 128:

CQUERY(C) :

SELECT DISTINCT D2_FILIAL,D2_DOC,D2_SERIE,D2_PEDIDO,F2_FRETE,F2_FRETAUT,F2_SEGURO,F2_DESPESA,F2_DESCCAB,F2_VLR_FRT
FROM SF2010 SF2, SD2010 SD2
WHERE  SD2.D2_FILIAL='0101'
AND SD2.D2_PEDIDO = '006023'
AND SD2.D_E_L_E_T_=' '
AND SF2.F2_FILIAL='0101'
AND SF2.F2_DOC = SD2.D2_DOC
AND SF2.F2_SERIE = SD2.D2_SERIE
AND SF2.F2_CLIENTE = SD2.D2_CLIENTE
AND SF2.F2_LOJA = SF2.F2_LOJA
AND SF2.D_E_L_E_T_= ' ' 

Sabemos que não é ela pois os filtros dela estão bem determinados, então o sistema conseguiu concluir a Query, por exemplo "SD2.D2_PEDIDO = '006023'" está bem determinístico, o sistema tentou achar o pedido "006023". Então continuemos.


Trecho exato:

Buscando pela última chamada pré-erro (MPSYSOPENQUERY(MPSYSOPENTABLES.PRW)) conseguimos ver essa CQUERY montada a seguir, note que ela possui falhas, retornando no valor da consulta "?"

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK MPSYSOPENQUERY(MPSYSOPENTABLES.PRW) 11/08/2023 16:29:12

Param 1: CQUERY(C) :

SELECT B8_FILIAL,B8_QTDORI,B8_PRODUTO,B8_LOCAL,B8_DATA,B8_DTVALID,B8_SALDO,B8_EMPENHO,B8_ORIGLAN,B8_LOTEFOR,B8_CHAVE,B8_LOTECTL,B8_NUMLOTE,B8_QEMPPRE,B8_QACLASS,B8_SALDO2,B8_QTDORI2,B8_EMPENH2,B8_QEPRE2,B8_QACLAS2,B8_DOC,B8_SERIE,B8_CLIFOR,B8_POTENCI,B8_PRCLOT,B8_ITEM,B8_NUMDESP,B8_DFABRIC,B8_ORIGEM,B8_SDOC,B8_LOJA,SB8.R_E_C_N_O_ SB8RECNO
FROM SB8010 SB8
WHERE  SB8.B8_FILIAL= ?
AND SB8.B8_PRODUTO= ?
AND SB8.B8_LOCAL= ?
AND SB8.B8_LOTECTL= ?
AND SB8.B8_SALDO > 0
AND SB8.D_E_L_E_T_=' '
ORDER BY  B8_FILIAL,B8_PRODUTO,B8_LOCAL,B8_LOTECTL,B8_NUMLOTE,B8_DTVALID


Sabemos então, que o campo do erro é algum dos campos acima.


Expandir
title2 - Avaliar se algum campo utilizado na Query possui os símbolos: < > ! ' = | + - * / %

Agora precisamos checar todos os campos acima pelo error.log se algum está com os símbolos indevidos ou se existem.


Começando a procurar pelos campos da expressão "WHERE", ou seja (B8_FILIAL, B8_PRODUTO, B8_LOCAL, B8_LOTECTL e B8_SALDO):

Bloco de código
firstline1
titleTrecho
linenumberstrue
WHERE  SB8.B8_FILIAL= ?
AND SB8.B8_PRODUTO= ?
AND SB8.B8_LOCAL= ?
AND SB8.B8_LOTECTL= ?
AND SB8.B8_SALDO > 0
AND SB8.D_E_L_E_T_=' '


Ao procurar no arquivo aberto da tabela SB8 os campos:


O retorno:


Todos os campos existem porém, o campo B8_LOTECTL está com valores de carácteres indevidos que bagunçam o entendimento do SQL na leitura das chamadas de Query.

O campo com esse valor é a causa do erro. Como o campo já está com o valor gravado, indicamos que o cliente teste com outro lote informado e que, contate seu DBA/Analista In Loco para tratar dentre todas as tabelas, o nome indevido contendo aspas.



Resultado pós análise/interação

Cliente não retornou sobre o erro crucial para a operação, logo, problema resolvido.



...