Buscando a estrutura de campos de uma tabela com DbStruct – Maratona AdvPL e TL++ 133

Nesse vídeo demonstraremos a utilização da função DbStruct que serve para buscar a estrutura de campos de um alias (nome do campo, tipo, tamanho e decimais).

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe133
Retorna a estrutura da tabela em um array
@type Function
@author Atilio
@since 15/12/2022
@see https://tdn.totvs.com/display/tec/DBStruct
@obs 
    Função DbStruct
    Parâmetros
        Não possui parâmetros
    Retorno
        + aRet        , Array   , Array sendo que as posições são: [1] Nome do Campo; [2] Tipo do Campo; [3] Tamanho do Campo; [4] Decimais do Campo;

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe133()
    Local aArea      := FWGetArea()
    Local cMensagem  := ""
    Local aCampos    := {}
    Local nAtual     := 0

    //Abre o cadastro de grupo de produtos e busca a estrutura da tabela
    DbSelectArea("SBM")
    SBM->(DbSetOrder(1)) // Filial + Código do Grupo
    aCampos := SBM->(DbStruct())
    cMensagem += PadR("Campo", 11) + "|" + PadR("Tipo", 5) + "|" + PadR("Tamanho", 8) + "|" + PadR("Decimal", 8) + CRLF

    //Percorre todos os campos   
    For nAtual := 1 To Len(aCampos)
        cMensagem += PadR(aCampos[nAtual][1],             11) + "|"
        cMensagem += PadR(aCampos[nAtual][2],              5) + "|"
        cMensagem += PadR(cValToChar(aCampos[nAtual][3]),  8) + "|"
        cMensagem += PadR(cValToChar(aCampos[nAtual][4]),  8)
        cMensagem += CRLF
    Next

    //Exibe a mensagem
    ShowLog(cMensagem)

    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.

Deixe uma resposta

Terminal de Informação