GetLastQuery

Tempo de leitura: 2 minutos

Olá, no post de hoje iremos falar da função auxiliar GetLastQuery() dentro 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] cAliasAlias usado para abrir o cursor.
[2] cQueryQuery executada.
[3] aCamposArray de campos com critério de conversão especificados.
[4] lNoParserCaso verdadeiro (.T.), não foi utilizada a função ChangeQuery() na string original.
[5] nTimeSpendTempo, em segundos, utilizado para abertura do cursor.

 

#include 'protheus.ch'
#include "tbiconn.ch"
/*{Protheus.doc} User Function fGetLQry
    (Essa função tem por finalidade mostrar a função GetLastQuery para retornar 
    a última consulta SQL executada entre BeginSQL e EndSQL)
    @type  Function
    @author Adilio Costa
    @since 23/06/2023
    @version 12.1.2210

   Acesse e se inscreva no Blog/Site ProtheusAdvpl para receber conteúdo:
   www.protheusadvpl.com.br
   Se inscreva no Canal do ProtheusAdvpl para receber vídeos:
   https://wwww.youtube.com/protheusadvpl
   Siga-nos no Instagram:
   http://https://www.instagram.com/protheusadvpl
   Siga a página do ProtheusAdvpl no Facebook:
   https://www.facebook.com/protheusadvpl2
   Conheça o Portal ProtheusAdvpl:
   https://hotmart.com/pt-br/marketplace/produtos/portal-protheusadvpl/O10336806O
*/

//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

	MsgInfo(cMg, "Atenção")

Return

Na imagem abaixo podemos ver o retorno da função GetLastQuery() do exemplo do código ADVPL acima:

GetLastQuery

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:

Receba as últimas atualizações do ProtheusAdvpl
Deixe seu melhor email
Nós respeitamos sua privacidade.