Deixando uma string com o tamanho do campo com a função AvKey – Maratona AdvPL e TL++ 058

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:

//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.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Rafael Strozi disse:

    Precisei fazer isto ontem, porém fiz utilizando

    Left(cString,TamSX3(‘CAMPO’)[1]) 😀

Deixe uma resposta

Terminal de Informação