Nesse vídeo demonstraremos a utilização da função OrdDescend, que serve para ordenar uma tabela de forma decrescente, começando assim do maior para o menor.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe378 Realiza a ordenação decrescente de um índice de uma tabela @type Function @author Atilio @since 28/03/2023 @see https://tdn.totvs.com/display/tec/OrdDescend @obs Função OrdDescend Parâmetros + xExp , Indefinido , Índice que será usado + cIndex , Caractere , Nome do índice (opcional) + lDesc , Lógico , Se .T. será decrescente Retorno + lRet , Lógico , Retorna .T. se conseguiu flagar como decrescente **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe378() Local aArea := FWGetArea() Local oTempTable Local aFields := {} Local cAliasTmp := GetNextAlias() Local nOrder Local cMensagem := "" //Cria a temporária oTempTable := FWTemporaryTable():New(cAliasTmp) //Adiciona no array das colunas as que serão incluidas (Nome do Campo, Tipo do Campo, Tamanho, Decimais) aAdd(aFields, {"CODIGO", "C", 6, 0}) aAdd(aFields, {"NOME", "C", 50, 0}) aAdd(aFields, {"VALOR", "N", 8, 2}) aAdd(aFields, {"EMISSAO", "D", 8, 0}) //Define as colunas usadas oTempTable:SetFields( aFields ) //Cria índice com colunas setadas anteriormente oTempTable:AddIndex("1", {"CODIGO", "NOME"} ) oTempTable:AddIndex("2", {"NOME"} ) //Efetua a criação da tabela oTempTable:Create() //Vamos incluir 3 registros RecLock(cAliasTmp, .T.) (cAliasTmp)->CODIGO := "TST001" (cAliasTmp)->NOME := "João da Silva" (cAliasTmp)->VALOR := 1.99 (cAliasTmp)->EMISSAO := Date() (cAliasTmp)->(MsUnlock()) RecLock(cAliasTmp, .T.) (cAliasTmp)->CODIGO := "TST002" (cAliasTmp)->NOME := "Maria da Silva" (cAliasTmp)->VALOR := 1.99 (cAliasTmp)->EMISSAO := Date() (cAliasTmp)->(MsUnlock()) RecLock(cAliasTmp, .T.) (cAliasTmp)->CODIGO := "TST003" (cAliasTmp)->NOME := "Carlos da Silva" (cAliasTmp)->VALOR := 1.99 (cAliasTmp)->EMISSAO := Date() (cAliasTmp)->(MsUnlock()) //Agora vamos ordenar a tabela de forma decrescente nOrder := 2 (cAliasTmp)->(DbSetOrder(nOrder)) OrdDescend(nOrder, cValToChar(nOrder), .T.) (cAliasTmp)->(DbGoTop()) //Vamos percorrer os registros e montar a mensagem While ! (cAliasTmp)->(EoF()) cMensagem += "+ " + Alltrim((cAliasTmp)->NOME) + CRLF (cAliasTmp)->(DbSkip()) EndDo FWAlertInfo(cMensagem, "Teste OrdDescend") //Exclui a temporária oTempTable:Delete() FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.