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.