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.
