BeginSQL com filtro por filial = Bug

Bom Dia,

alguém já pegoum problema com o BeginSQL quando temos nele um filtro por filial na última posição do where?


BeginSQL Alias cAliasAL
    SELECT *
    FROM %Table:VC1% VC1
    WHERE VC1_ORIGEM = %exp:cOriCEV% AND VC1_FILIAL = %xfilial:VC1%
EndSQL

A SQL acima produz o erro abaixo (vide as duas aspas simples no final).


    TCVersion [18.2.1.4]    ARCH [64]    OS [WINDOWS]    BUILD [RELEASE]    
SELECT * FROM VC1010 VC1 WHERE  VC1_ORIGEM = '00020008' AND VC1_FILIAL = '010103' ' on __EXECSQL(APLIB300.PRW) 18/11/2019 18:56:02 line : 149

Alguém sabe se tem alguma DOC que trate este assunto?

Edit

Previsão de correção para quem quiser: 27-02-20 quando sair a correção posto como resposta da pergunta!

Boa tarde, Chegou a atualizar as includes com a ultima do portal ?

O Tiago Campos deu uma ótima dica. Consultei no portal e verifiquei que a última versão disponível para a Release 12 é datada de 20/12/2019. Não sei se vai funcionar mas segue o link para download: https://suporte.totvs.com/portal/p/10098/download#detail/491499

opa, vamos testar :slight_smile:

Boa tarde, Maurício!

Aparenta ser algum problema do framework, efetuei a aplicação da LIB e includes mais recentes e também consegui reproduzir o erro.

Recomendo efetuar a abertura de um chamado na TOTVS com a evidência.


User Function TSTSQL
Local _cAlias   := GetNextAlias()

    BeginSql Alias _cAlias

        SELECT * FROM %TABLE:SA1%
        WHERE A1_COD = '000002' AND A1_FILIAL = %xFilial:SA1%

    EndSql

    (_cAlias)->(DbGoTop())

    If(!(_cAlias)->(EoF()))

        MsgInfo('Encontrou!')

    EndIf

    (_cAlias)->(DbCloseArea())

Return


TCVersion [18.2.1.4]    ARCH [64]    OS [WINDOWS]    BUILD [RELEASE]    
SELECT * FROM SA1010 WHERE  A1_COD = '000002' AND A1_FILIAL = '  ' '
__EXECSQL - APLIB300.PRW(149) - Params: CALIAS:SCGN000007,CQUERY:SELECT * FROM SA1010 WHERE  A1_COD = '000002' AND A1_FILIAL = '  ' ',@ACAMPOSCONV:,LNOPARSER:.F. )

Boa tarde, vou tentar reproduzir e dou um feedback.

Sim, atualizei ontem a noite e continuou. Posto aqui assim que sair a solução, aproveitando que temos prime :slight_smile:

Qual IDE vocês utilizam? Se for VSCode, qual das extensões?

Daniel, utilizo o Visual Studio Code com a extensão oficial da TOTVS.

Boa tarde,

Realmente existe um erro, o mesmo parece estar presente na pré-compilação, consegui reproduzir até mesmo ser colocar um include no fonte, só de gerar o PPO do fonte, já fica evidente a aspas simples a mais no final da instrução SQL.

Já abri uma issue sobre isso para a equipe responsável, não tenho qualquer data para informar, o erro parece estar presente no appre ou no appserver, não consigo dizer com exatidão.

Por enquanto, é workaround, que não tem qualquer impacto em relação ao retorno da query:


BeginSQL Alias cAliasAL
    SELECT *
    FROM %Table:VC1% VC1
    WHERE VC1_FILIAL = %xfilial:VC1% AND VC1_ORIGEM = %exp:cOriCEV%
EndSQL

Basta NÃO deixar o %xFilial:Alias% no final da instrução SQL, isso já resolvi de forma pontual o problema, considere também utilizar o %NotDel% no final da instrução SQL, são raras as rotinas que trazemos também registros deletados de forma lógica.

Aham, obtive retorno da TOTVs Framework também com a questão. Mas também sem data prevista. Agora é só aguardar