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.

18 Comentários


  1. Helpful info. Fortunate me I found your site accidentally, and I am stunned why this coincidence did not happened in advance! I bookmarked it.


  2. Hi my loved one! I want to say that this article is awesome, great written and come with almost all significant infos. I’d like to peer more posts like this .


  3. This is very interesting, You are an overly professional blogger. I have joined your feed and look ahead to looking for more of your magnificent post. Also, I have shared your web site in my social networks


  4. Appreciating the hard work you put into your site and in depth information you provide. It’s great to come across a blog every once in a while that isn’t the same outdated rehashed material. Wonderful read! I’ve saved your site and I’m including your RSS feeds to my Google account.


  5. My coder is trying to persuade me to move to .net from PHP. I have always disliked the idea because of the expenses. But he’s tryiong none the less. I’ve been using Movable-type on numerous websites for about a year and am anxious about switching to another platform. I have heard very good things about blogengine.net. Is there a way I can transfer all my wordpress content into it? Any kind of help would be really appreciated!


  6. I am curious to find out what blog system you have been working with? I’m experiencing some minor security problems with my latest site and I would like to find something more safe. Do you have any solutions?


  7. Magnificent web site. Lots of useful information here. I’m sending it to some pals ans also sharing in delicious. And of course, thank you on your effort!

Comentários encerrados.