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 | Expandir |
---|
title | 2 - Procurar em cada função da pilha, indícios do que gerou o erro (pergunte/campo/tabela/filtro) |
---|
| Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| Called from FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 1004
Called from FORMSTRUTABLE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 433
Called from FWFORMSTRUCT(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 3985
Called from FWMBROWSE:LOADCOLUMNS(FWMBROWSE.PRW) 04/04/2023 15:05:10 line : 1796
Called from FWMBROWSE:ACTIVATE(FWMBROWSE.PRW) 04/04/2023 15:05:10 line : 562
Called from FWMARKBROWSE:ACTIVATE(FWMARKBROWSE.PRW) 04/04/2023 15:05:10 line : 267
Called from FWMARKBROWSE(MSLIB.PRW) 04/04/2023 15:05:10 line : 10784
Called from MARKBROWSEF(MSLIB.PRW) 04/04/2023 15:05:10 line : 5783
Called from MARKBROW(MSLIB.PRW) 04/04/2023 15:05:10 line : 5763
Called from MATA500(MATA500.PRX) 17/03/2022 18:01:27 line : 129
Called from __EXECUTE(APLIB090.PRW) 04/04/2023 15:05:08 line : 721
Called from MDIEXECUTE(APLIB260.PRW) 04/04/2023 15:05:08 line : 924 |
A - Buscando pela função da primeira pilha "FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX)", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| STACK FWFORMSTRUCT(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10
Param 1: NTYPE(N) : 3
Param 2: CALIASSX2(C) : SC6
Param 3: BSX3(U) : NIL
Param 4: LVIEWUSADO(L) : .F.
Param 5: LVIRTUAL(L) : .T.
Param 6: LFILONVIEW(L) : .F.
Param 7: CPROGRAM(C) : MATA500
Local 1: NTYPE(N) :3
Local 2: CALIASSX2(C) :SC6
Local 3: BSX3(U) :NIL
Local 4: LVIEWUSADO(L) :.F.
Local 5: LVIRTUAL(L) :.T.
Local 6: LFILONVIEW(L) :.F.
Local 7: CPROGRAM(C) :MATA500
Local 8: AAUX(A) :
Local 9: OSTRUCT(U) :NIL |
Conseguimos extrair: - O programa onde deu o erro é o MATA500 pelo parâmetro 7.
- A tabela do erro posicionada é a tabela SC6 pelo parâmetro 2.
B - Buscando pela segunda função da pilha "FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX)", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| STACK FORMSTRUTABLE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10
Param 1: CALIASSX2(C) : SC6
Param 2: BSX3(U) : NIL
Param 3: LVIEWUSADO(L) : .F.
Param 4: LVIRTUAL(L) : .T.
Param 5: LFILONVIEW(L) : .F.
Param 6: NTYPE(N) : 3
Local 1: CALIASSX2(C) :SC6
Local 2: BSX3(U) :NIL
Local 3: LVIEWUSADO(L) :.F.
Local 4: LVIRTUAL(L) :.T.
Local 5: LFILONVIEW(L) :.F.
Local 6: NTYPE(N) :3
Local 7: AAREA(A) :
Local 8: AAUX(A) :
Local 9: AGROUPS(A) :
Local 10: ARETORNO(A) :
Local 11: CAUX(C) :
Local 12: LHASXXA(L) :.F.
Local 13: LOLDSET(L) :.F.
Local 14: LUSADO(L) :.T.
Local 15: LUSADOMODEL(L) :.T.
Local 16: NPOS(N) :0
Local 17: NX(N) :0
Local 18: NY(N) :0
Local 19: CQUERY(C) :INSERT INTO dbo.##TMPSC00_122 (X3_CAMPO) SELECT XAM_FIELD FROM XAM010 XAM WHERE XAM.XAM_FIELD IN (SELECT SX3.X3_CAMPO FROM SX3010 SX3 WHERE SX3.X3_ARQUIVO = 'SC6' AND SX3.D_E_L_E_T_ = ' ' ) AND XAM.XAM_ANONIM = '1' AND XAM.D_E_L_E_T_=' ' AND NOT EXISTS (SELECT XAMSUB.R_E_C_N_O_ FROM XAM010 XAMSUB WHERE XAMSUB.XAM_FIELD = XAM.XAM_FIELD AND XAMSUB.XAM_ANONIM = '2' AND XAMSUB.D_E_L_E_T_=' ') ORDER BY XAM_FIELD
Local 20: CALIASQ(C) :SCGN0000ED
Local 21: LINDB(L) :.T.
Local 22: LEMPTYBSX3(L) :.T.
Local 23: LRETCACHE(L) :.F.
Local 24: LLOCSX2(L) :.F.
Local 25: AMDLFIELDS(A) :
Local 26: AVIEWFIELDS(A) :
Local 27: ARETURN(U) :NIL
Local 28: NLENX3(N) :10
Local 29: CX3CBOXANONYM(C) :SELECT XAM_FIELD FROM XAM010 XAM WHERE XAM.XAM_FIELD IN (SELECT SX3.X3_CAMPO FROM SX3010 SX3 WHERE SX3.X3_ARQUIVO = 'SC6' AND SX3.D_E_L_E_T_ = ' ' ) AND XAM.XAM_ANONIM = '1' AND XAM.D_E_L_E_T_=' ' AND NOT EXISTS (SELECT XAMSUB.R_E_C_N_O_ FROM XAM010 XAMSUB WHERE XAMSUB.XAM_FIELD = XAM.XAM_FIELD AND XAMSUB.XAM_ANONIM = '2' AND XAMSUB.D_E_L_E_T_=' ') ORDER BY XAM_FIELD
Local 30: BSEEKANONYM(B) :{|CFIELD| (CANONYMALIAS)->(DBSEEK(CFIELD))}
Local 31: LTEMPTABLE(L) :.T.
Local 32: CANONYMALIAS(C) :SCGN0000EF |
Conseguimos extrair: - A tabela do erro posicionada é a tabela SC6 pelo parâmetro 1.
C - Buscando pela terceira função da pilha "FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX)", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| STACKTHREAD ERROR FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX) 04/04([26024], systh, VLUP-ARKO-APP) 14/11/2023 1509:0542:1008
: Error Param: 1:0 CALIASALT(C07001) : SCGN0000ED
Local 1: CALIASALT(C) :SCGN0000ED
Local 2: ARETORNO(A) :
Local 3: NMAXLENCOMBO(N) :0
Local 4: NINITCBOX(N) :0
Local 5: NX(N) :0
Local 6: ACOMBO(A) :
Local 7: ATMP(A) :
Local 8: BPICTVAR(U) :NIL
Local 9: CX3CBOX(C) : |
Conseguimos extrair: D - Buscando pela quarta função da pilha "FWBUILDFEATURE(PROTHEUSFUNCTIONMVC.PRX)", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| STACK FWBUILDFEATURE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10
Param 1: NTIPO(N) : 4
Param 2: CEXPRADVPL(C) : @!
Local 1: NTIPO(N) :4
Local 2: CEXPRADVPL(C) :@!
Local 3: CAUX(C) :FWInitCpo(a,b,c),xRet:=(@!),FWCloseCpo(a,b,c,.T.),xRet
Local 4: XRET(U) :NIL |
OBSERVAÇÃO: De longe, a pilha mais clara até agora, mostra o cabeçalho do erro e o formato do retorno do erro "@!", o erro está aqui, mas não foi clareado para nós onde exatamente. Conseguimos extrair: - A validação do erro
- O formato do retorno do erro ("xRet")
(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 "?"E - Buscando pela quinta função da pilha "STACK { | E | ERRORDIALOG( E )}", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| Param 1: E(O) : O
Local CodeBlockSTACK MPSYSOPENQUERY(MPSYSOPENTABLES.PRW) 11/08/2023 16:29:12
Param 1: ECQUERY(OC) :O |
Conseguimos extrair: F - Buscando pela sexta função da pilha "STACK { | E | ERRORDIALOG( E ) }(APLIB240.PRW)", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| Param 1: E(O) : O
Local 1: E(O) :O
Local 2: LINSIGA(L) :.T.
Local 3: CMSG(U) :NIL
Local 4: NI(U) :NIL
Local 5: CX(U) :NIL
Local 6: CERROR(U) :NIL
Local 7: LSKIPERROR(L) :.F.
Local 8: AOBJLOG(A) :
Local 9: NX(U) :NIL
Local 10: URETURN(U) :NIL |
Conseguimos extrair:
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)E - Buscando pela sétima função da pilha "ERRORDLG(APLIB240.PRW)", obtemos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| WHERE Param 1: E(O) : O
Local CodeBlock 1: E(O) :O |
Conseguimos extrair: OBSERVAÇÃO: Nesse caso, a análise das pilhas foi importante para nos certificar que o erro estava no formato (@!) e na tabela (SC6) no processo da rotina (MATA500), mas o erro específico não foi localizado ainda. | Expandir |
---|
title | 3 - Localizar a última tabela olhada pelo sistema antes do erro |
---|
| 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: Image Added
O retorno: Image Added Image Added Image Added Image Added Image Added
Conclusão: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 |
| No error.log digite " **", ou seja, espaço-asterisco-asterisco e procure. Irá aparecer onde o documento levar, a ultima parada do sistema, importante para localizar o que ele foi gravar e não conseguiu. Obtemos esse resultado: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| _SC00; Rdd:TOPCONN; Alias:SCGN0000EF; Filter :; Recno:5000; Total Recs:0; Order:1
Index (0) :**SC0001 X3_CAMPO
Field 1: X3_CAMPO(C) : |
OBSERVAÇÃO: Nesse caso, não foi útil para nós, pois a última parada foi em uma tabela temporária "**SC0001", seguimos analisando. Expandir |
---|
title | 4 - Localizar campo na tabela SX3 |
---|
| Simboliza o último campo visto pelo sistema antes do erro, ao procurar no error.log por "SX3" temos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| SX3010; Rdd:TOPCONN; Alias:SX3; Filter :; Recno:112953; Total Recs:166831; Order:1
Index (0) :**SX30101 X3_ARQUIVO+X3_ORDEM
Index (1) :SX30102 X3_CAMPO
Index (2) :SX30103 X3_GRPSXG+X3_ARQUIVO+X3_ORDEM
Index (3) :SX30104 X3_ARQUIVO+X3_FOLDER+X3_ORDEM
Index (4) :SX30105 X3_ARQUIVO+X3_IDXFLD+X3_CAMPO
Field 1: X3_ARQUIVO(C) :SC6
Field 2: X3_ORDEM(C) :AC
Field 3: X3_CAMPO(C) :C6_SOLCOM
Field 4: X3_TIPO(C) :C
Field 5: X3_TAMANHO(N) :6
Field 6: X3_DECIMAL(N) :0
Field 7: X3_TITULO(C) :Num. Solicit
Field 8: X3_TITSPA(C) :Num. Solicit
Field 9: X3_TITENG(C) :Req.No.
Field 10: X3_DESCRIC(C) :Número da Solicitação de
Field 11: X3_DESCSPA(C) :Numero de Solicitud de
Field 12: X3_DESCENG(C) :Number of Request of
Field 13: X3_PICTURE(C) :@! ' AND B2_LOCAL >= 'ZZ' AND B2_LOCAL <= ? AND SB2.D_E_L_E_T_=
Field 14: X3_VALID(C) :
Field 15: X3_USADO(C) :x x x x x x x x x x x x x x x x
Field 16: X3_RELACAO(C) :
Field 17: X3_F3(C) :
Field 18: X3_NIVEL(N) :1
Field 19: X3_RESERV(C) : x
Field 20: X3_CHECK(C) F :
Field 21: X3_TRIGGER(C) :
Field 22: X3_PROPRI(C) :
Field 23: X3_BROWSE(C) :
Field 24: X3_VISUAL(C) :
Field 25: X3_CONTEXT(C) :
Field 26: X3_OBRIGAT(C) :
Field 27: X3_VLDUSER(C) :
Field 28: X3_CBOX(C) :
Field 29: X3_CBOXSPA(C) :
Field 30: X3_CBOXENG(C) :
Field 31: X3_PICTVAR(C) :
Field 32: X3_WHEN(C) :
Field 33: X3_INIBRW(C) :
Field 34: X3_GRPSXG(C) :
Field 35: X3_FOLDER(C) :
Field 36: X3_PYME(C) :S
Field 37: X3_CONDSQL(C) :
Field 38: X3_CHKSQL(C) :
Field 39: X3_IDXSRV(C) :N
Field 40: X3_ORTOGRA(C) :
Field 41: X3_IDXFLD(C) :N
Field 42: X3_TELA(C) :
Field 43: X3_PICBRV(C) :
Field 44: X3_AGRUP(C) :
Field 45: X3_POSLGT(C) :1
Field 46: X3_MODAL(C) :2 |
Conseguimos extrair: - O campo possui o formato do erro "@!"
- O campo é padrão e tem suas informações (campos da SX3) no padrão.
- O campo que antecede erro está na SC6.
- O campo está com a ordem errada (X3_ORDEM = AC)
Pela natureza do campo, o pedido de venda proveniente veio de uma solicitação de compras, podemos ver qual valor ele carregava no sistema procurando por "C6_SOLCOM", temos: Bloco de código |
---|
firstline | 1 |
---|
title | Trecho |
---|
linenumbers | true |
---|
| Field 137: C6_SOLCOM(C) : |
Nesse caso do erro, então, ele estava vazio no momento. Após visualizar o campo, temos de verificar pois já podem ser a causa do erro: - É padrão?
- Os campos da SX3 estão no padrão?
- O campo está na ordenação (X3_ORDEM) certa?
Nessa etapa pode ser comparado o seu ambiente com o do cliente. | Expandir |
---|
title | 5 - Localizar parâmetro na tabela SX6 |
---|
|
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.
Conclusão: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.
|
|
|