Tempo de leitura: 2 minutos
A função GetLastQuery() em ADVPL a última query executada via BeginSql / EndSqldentro do desenvolvimento de querys no TOTVS Protheus.
Muitas vezes como forma de facilitar o desenvolvimento de querys no Protheus utilizamos o que chamamos de Embedded SQL, que são querys SQL embutidas no código ADVPL, no entanto quando vamos depurar um código ADVPL que tenha essas características não é possível colocar pontos de paradas entre as instruções BeginSQL e EndSQL, assim não conseguiremos obter a consulta SQL que foi montada dentro desses blocos de instruções.
Para conseguirmos obter a consulta SQL montada utilizamos a função GetLastQuery(), essa função obtém a última consulta SQL montada entre BeginSQL e EndSQL.
Após a abertura do cursor, no alias especificado, a função GetLastQuery() retorna um array, com 5 elementos, onde estão disponíveis as seguintes informações sobre a query executada:
[1] cAlias – Alias usado para abrir o cursor.
[2] cQuery – Query executada.
[3] aCampos – Array de campos com critério de conversão especificados.
[4] lNoParser – Caso verdadeiro (.T.), não foi utilizada a função ChangeQuery() na string original.
[5] nTimeSpend – Tempo, em segundos, utilizado para abertura do cursor.
//Bibliotecas
#Include "Protheus.ch"
#INCLUDE "TBICONN.CH"
#INCLUDE "topconn.ch"
#include "TOTVS.CH"
/*/{Protheus.doc} fGetLQry
Exemplo da função GetLastQuery em ADVPL
@type function
@author Adilio Costa
@since 24/01/2023
@version 1.0
@?Inscreva-se no Blog ProtheusAdvpl:
https://www.protheusadvpl.com.br
@?Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@?Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@?Conheça os Cursos e Formações do ProtheusAdvpl:
https://cursos-e-formacoes-protheusadvpl.gr-site.com/
@Participe de nossas comunidades no WhatsApp:
-Comunidade Protheus Backoffice:https://chat.whatsapp.com/KMUIAjwZ6EZ6eAHsLkPTyb
-Comunidade Protheus-RH:https://chat.whatsapp.com/L5dUyAna6xU4ylG5DUgfOW
-Comunidade Protheus-Programação:https://chat.whatsapp.com/LsD6z0apdqKHlOz67bcaEn
-Comunidade Protheus-Framework:https://chat.whatsapp.com/BzUFpjaSnTC3vtsfa77jmG
|Se esse conteúdo foi útil pra você nos ajude divulgando
ele e nossas redes sociais!!|
/*/
//SQL no Protheus - Embedded SQL - fGetLQry
User Function fGetLQry()
Local cAlias := ""
Local cQuery := ""
Local cMsg := ""
//Abro o ambiente
RpcSetType(3)
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM"
//Construindo a consulta
BeginSQL Alias "SQL_SB1"
SELECT
B1_COD,
B1_DESC
FROM
%table:SB1% SB1
WHERE
B1_FILIAL = %xFilial:SB1%
AND SB1.%notDel%
EndSQL
//Fecha a consulta com DBCloseArea()
SQL_SB1->(DBCloseArea())
//Obtém as informações da última query executada entre BeginSQL e EndSQL
aDados := GetLastQuery()
cAlias := aDados[1]
cQuery := aDados[2]
//Mostra mensagem com todas as informações capturadas
cMsg += "* cAlias - " + cAlias + Chr(13) + Chr(10)
cMsg += "* cQuery - " + cQuery
FWAlertInfo(cMg, "Atenção")
Return
Na imagem abaixo podemos ver o retorno da função GetLastQuery() do exemplo do código ADVPL acima:

Bem, finalizamos mais um post aqui no Blog/Site ProtheusAdvpl, espero que você tenha entendido. Qualquer dúvida deixe seu comentário ou nos mande um e-mail para adiliocosta@protheusadvpl.com.br.
Links de referências: