Nesse vídeo será demonstrado em como deixar uma variável caractere com o mesmo tamanho de um campo do dicionário (ideal para fazer Seek) com a função AvKey.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | //Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe058 Exemplo de função que formata um conteúdo conforme o campo do dicionário @type Function @author Atilio @since 05/12/2022 @obs Função AvKey Parâmetros + Conteúdo que será formatado podendo ser numérico ou data ou caractere + Nome do campo do dicionário (SX3) + Define se irá truncar o conteúdo do xInformacao caso o seja menor que o tamanho do campo + Se é para considerar um array como struct do campo (similar ao DbStruct mas somente do campo) Retorno + Conteúdo formatado conforme campo do dicionário de dados (SX3) **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe058() Local aArea := FWGetArea() Local cDescri := "Banana" Local cCodigo := "F0002" //Abre a tabela de produtos e usa o índice da descrição DbSelectArea( "SB1" ) SB1->(DbSetOrder(3)) // B1_FILIAL + B1_DESC + B1_COD //Tenta posicionar logo como veio os dados If SB1->(MsSeek(FWxFilial( 'SB1' ) + cDescri + cCodigo)) FWAlertSuccess( "Encontrou a busca" , "Teste 1" ) Else FWAlertError( "Não Encontrou" , "Teste 1" ) EndIf //Agora formata o conteúdo com o AvKey cDescri := AvKey(cDescri, "B1_DESC" ) cCodigo := AvKey(cCodigo, "B1_COD" ) If SB1->(MsSeek(FWxFilial( 'SB1' ) + cDescri + cCodigo)) FWAlertSuccess( "Encontrou a busca" , "Teste 2" ) Else FWAlertError( "Não Encontrou" , "Teste 2" ) EndIf FWRestArea(aArea) Return |
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Precisei fazer isto ontem, porém fiz utilizando
Left(cString,TamSX3(‘CAMPO’)[1]) 😀
Bom dia Rafael.
Opa, obrigado pelo comentário jovem.
Um grande abraço.