FWSX3Util Metodo retorno tamanho e decimal

A função FWSX3Util não tem nenhum método especifico para retornar o tamanho e decimal de um determinado campo, na própria documentação não consta nada que auxilia nessa questão, como vou migrar o dicionário de dados para o SGDB não posso mais manipular a SX3 diretamente, então como faremos para pegar o tamanho e decimal de um campo? Preciso passar esses dados na classe FWTemporaryTable. Alguém já conseguiu resolver essa questão?

Grato desde já.

Paulo, bom dia!

Dá uma olhada na função OpenSxs.. ela retorna os campos da SX3 de uma determinada tabela e assim você consegue ver o tamanho pelo campo X3_TAMANHO e os decimais pelo X3_DECIMAL.

Documentação:

https://tdn.totvs.com/display/framework/OpenSxs

Breve exemplo:


OpenSxs(,,,,cEmp,"SX3TMP","SX3",,.F.)
If Select("SX3TMP") > 0
    SX3TMP->(DbSetFilter({|| Alltrim(X3_ARQUIVO) == "SE2"}))

    While !SX3TMP->(Eof())
         aAdd(aCampos,{SX3TMP->X3_CAMPO,SX3TMP->X3_TAMANHO,SX3TMP->X3_DECIMAL})
         SX3TMP->(DbSkip())
    EndDo
Endif

Espero ter ajudado.

Boa tarde Paulo,

Utilize a função FWTamSX3, ela recebe como parâmetro o nome do campo (char) e retorna um array no seguinte formato:


[ nTamanho, nDecimal, nTipo ]


Exemplo:


local aSize as array

aSize := FWTamSX3("A1_FILIAL")

if !Empty(aSize)
  ConOut(aSize[1], aSize[2], aSize[3])
else
  ConOut("404 - Field not found! =D")
endif

@Daniel Mendes
Seria possível documentarem essa função? Não tem referencia dela no TDN.

Ola,

Todas essas funções de manipulação de dados como o OpenSXs e o FwSx3util, funcionam tanto para o dicionário no banco, quanto para ambientes que ainda utilizam o dicionário em DBF? Ainda não migrei o dicionário para o banco, mas quero iniciar os desenvolvimentos no formato correto, para evitar muitas alterações quando for migrar para o banco.

Desde já agradeço.

Atenciosamente, Paulo Santana