ExplicaçãoEsse 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
Há abaixo dois exemplos, o primeiro onde o sistema não exibe a Query no cabeçalho e o outro, onde a Query com erro já é exibida no cabeçalho facilitando a análise. Tópicos de Análise (com tickets de exemplo) Deck of Cards |
---|
startHidden | false |
---|
effectDuration | 0.5 |
---|
id | Custo Médio |
---|
effectType | horizontal |
---|
loopCards | true |
---|
| Card |
---|
default | true |
---|
id | #18537428 |
---|
label | #18537428 |
---|
| Erro Expandir |
---|
| Para ver o erro completo, abra o ticket: https://totvssuporte.zendesk.com/agent/tickets/18537428 Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| 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 |
---|
title | 1 - 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 |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| 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 |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| 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 |
---|
title | 2 - 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 |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| 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çãoCliente não retornou sobre o erro crucial para a operação, logo, problema resolvido.
|
Card |
---|
default | true |
---|
id | #18573677 |
---|
label | #18573677 |
---|
| Erro Expandir |
---|
| Para ver o erro completo, abra o ticket: https://totvssuporte.zendesk.com/agent/tickets/18573677 Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| THREAD ERROR ([11320], cpereira, DELTA-NT-HP-001) 17/11/2023 12:25:34
: Error : 0 (07001) (RC=-1) - [Microsoft][SQL Server Native Client 11.0]COUNT field incorrect or syntax error
Error : 0 (00000) (RC=-1) -
( From tMSSQLConnection::GetQueryFile )
Thread ID [18100] User [ofiorentino] IO [4137] Tables [58] MaxTables [60] Comment [MATR690 - TCPIP - ThreadID(11320)] SP [ ] Traced [No] SQLReplay [No] InTran [No] DBEnv [MSSQL/HARDY_HOMOLOG] DBThread [(SPID 213,247)] Started [17/11/2023 12:24:25] IP [192.168.1.148:7953] IDLE [ ] InTransact [ ] Memory [0] Running [ROP_QUERY for 0 s.] RCV [220515] SND [723162] TCBuild [20210202-20220802] TCVersion [21.1.1.8] ARCH [64] OS [WINDOWS] BUILD [RELEASE]
SELECT SUM(SB2.B2_QATU) B2_QATU,SUM(SB2.B2_QEMP) B2_QEMP,SUM(SB2.B2_RESERVA) B2_RESERVA,SUM(SB2.B2_SALPEDI) B2_SALPEDI FROM SB2010 SB2 WHERE B2_FILIAL = '01' AND SB2.B2_COD = '' 'HM001J59F ' AND B2_LOCAL >= 'ZZ' AND B2_LOCAL <= ? AND SB2.D_E_L_E_T_= ' ' on __EXECSQL(APLIB300.PRW) 23/05/2023 15:13:31 line : 147
|
|
Tópicos de Análise Expandir |
---|
title | 1 - Encontrar QUERY do erro |
---|
| Quando ocorre esse erro, por trás há uma Query com erro e ela foi demonstrada no cabeçalho: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| SELECT SUM(SB2.B2_QATU) B2_QATU,SUM(SB2.B2_QEMP) B2_QEMP,SUM(SB2.B2_RESERVA) B2_RESERVA,SUM(SB2.B2_SALPEDI) B2_SALPEDI FROM SB2010 SB2 WHERE B2_FILIAL = '01' AND SB2.B2_COD = '' 'HM001J59F ' AND B2_LOCAL >= 'ZZ' AND B2_LOCAL <= ? AND SB2.D_E_L_E_T_= ' ' |
Sabemos então, que o campo do erro é algum dos campos acima.
|
Expandir |
---|
title | 2 - 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.
Analisando já podemos ver que o campo B2_COD está com aspas indevidas: B2_COD = ' ' ' HM001J59F '
Ao procurar no arquivo aberto da tabela SB2 os campos da Query (B2_FILIAL, B2_COD, B2_LOCAL, B2_SALPEDI, B2_RESERVA, B2_QEMP, B2_QATU): Image Added
O retorno: Image Added Image Added Image Added Image Added Image Added Image Added Image Added
Podemos ver que todos existem e nenhum está indevido, contudo, na Query foi apontado que o código produto era aproximadamente "HM001J59F" e não "MMR0220025000820CAK25F".
Ao procurar no arquivo do erro inteiro por "MMR0220025000820CAK25F" só há apenas essa ocorrência que menciona esse código, ou seja, indica que o sistema realmente se perdeu no campo de produto indevido com aspas.
Procurando pela tabela que dá o código do produto no sistema (SB1), pelo campo de código (B1_COD), encontramos: Image Added Outro produto não visto anteriormente, comprovando ainda mais a tese.
Procurando pelo código aproximado do produto com erro "HM001J59F" chegamos Image Added
Ou seja, dentro da Query está sendo encontrado esse produto (B1_COD) com o valor indevido, no caso, com aspas.
Todos os campos existem porém, o campo B1_COD/B2_COD estão com valores de carácteres indevidos que bagunçam o entendimento do SQL na leitura das chamadas de Query. Os campos com esse tipo de valor é a causa do erro. Como os campos já estão com o valor gravado, indicamos que o cliente teste restringindo o filtro e tratando todos os valores indevidos dos campos B1_COD e B2_COD, para isso, ele deve contatar seu DBA/Analista In Loco para tratar dentre todas as tabelas, os valores indevidos contendo aspas.
|
Resultado pós análise/interaçãoCliente não retornou sobre o erro crucial para a operação, logo, problema resolvido.
|
|
|