No artigo de hoje, vamos demonstrar em como criar e utilizar um índice temporário em uma tabela padrão do sistema, através da IndRegua.
Pessoal, antes de começarmos, bem antigamente era comum usarmos a CriaTrab junto da IndRegua, mas conforme o passar do tempo e a evolução do sistema, atualmente não é mais indicado utilizar CriaTrab, por isso no lugar usamos a GetNextAlias, conforme a documentação do TDN disponível nesse link – https://tdn.totvs.com/display/public/framework/CriaTrab+-+Retorna+arquivo+de+trabalho
Dito isso, como que funciona a IndRegua, basicamente ela recebe o alias da tabela, um nome temporário para o índice e a chave dos campos que irão compor o índice.
Então para nosso exemplo, nós vamos criar um índice temporário com os campos B1_FILIAL, B1_CODGTIN e B1_DESC. Notem como ficou o fonte:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zTstIndic Função para testar a criação de índices temporárias em tabelas padrões @type Function @author Atilio @since 04/11/2023 /*/ User Function zTstIndic() Local cTabela := "SB1" Local cIndTmp := GetNextAlias() Local cCampos := "B1_FILIAL+B1_CODGTIN+B1_DESC" Local cMensagem := "" //Abre a tabela de produtos DbSelectArea(cTabela) //Monta a mensagem do Antes cMensagem += "==== ANTES ====" + CRLF cMensagem += "O índice numérico é: " + cValToChar((cTabela)->(IndexOrd())) + CRLF cMensagem += "E a chave do índice é: " + (cTabela)->(IndexKey()) + CRLF cMensagem += "Estou no registro: " + Alltrim((cTabela)->B1_COD) + " - " + Alltrim((cTabela)->B1_DESC) + CRLF cMensagem += CRLF + CRLF //Agora monta o índice temporário IndRegua(cTabela, cIndTmp, cCampos) //Monta a mensagem do Depois cMensagem += "==== DEPOIS ====" + CRLF cMensagem += "O índice numérico é: " + cValToChar((cTabela)->(IndexOrd())) + CRLF cMensagem += "E a chave do índice é: " + (cTabela)->(IndexKey()) + CRLF cMensagem += "Estou no registro: " + Alltrim((cTabela)->B1_COD) + " - " + Alltrim((cTabela)->B1_DESC) + CRLF cMensagem += CRLF + CRLF //Mostra a mensagem ShowLog(cMensagem) Return
Agora vejam o print da tela de resultado:
Bom pessoal, por hoje é só.
Abraços e até a próxima.