Buscando o Resultado de uma Query através da MPSysExecScalar | Ti Responde 0203

No vídeo de hoje, vamos demonstrar em como usar a função MPSysExecScalar, para executar uma query e já buscar o valor de uma coluna.

A dúvida de hoje, nos perguntaram, se seria possível em uma query de agrupamento, já executar e buscar o valor de uma coluna, ao invés de ter que testar se tem dados e atribuir em uma variável.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar em como usar a função MPSysExecScalar para executar a query diretamente e popular a informação em uma variável.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "tlpp-core.th"

//Declaração da namespace
Namespace custom.terminal.youtube

#Define CRLF Chr(13) + Chr(10) //Carriage Return Line Feed
    
/*/{Protheus.doc} User Function video0203
Exemplo de como buscar o total de uma query direto para uma variável
@type Function
@author Atilio
@since 12/08/2024
@example custom.terminal.youtube.u_video0203()
/*/

User Function video0203()
    Local aArea         := FWGetArea()      As Array
    Local cQuery        := ""               As Character
    Local nTotalValue   := 0                As Numeric
    Local dDateRef      := sToD("20230101") As Date

    //Busca todos os itens a partir de uma data de corte
    cQuery := " SELECT  " + CRLF
    cQuery += "     SUM(D2_TOTAL) AS VALOR_TOT " + CRLF
    cQuery += " FROM  " + CRLF
    cQuery += "     " + RetSQLName("SD2") + " SD2 " + CRLF
    cQuery += " WHERE " + CRLF
    cQuery += "     D2_FILIAL = '" + FWxFilial("SD2") +  "' " + CRLF
    cQuery += "     AND D2_EMISSAO >= '" + dToS(dDateRef) + "' " + CRLF
    cQuery += "     AND SD2.D_E_L_E_T_ = ' ' " + CRLF

    //Executa a query e pega o campo e retorna para uma variável
    nTotalValue := MPSysExecScalar(cQuery, "VALOR_TOT")

    //Exibe uma mensagem
    FWAlertInfo("O valor total encontrado é de <strong>" + cValToChar(nTotalValue) + "</strong>!", "Teste MPSysExecScalar")

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação