Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo do Brasil

? Como Saber Quantas casas decimais tem o campo da tabela

Recommended Posts

Oi pessoal...

Andei procurando mas não encontrei nada sobre isso...

Simples... dado um campo de uma tabela, do tipo ftFloat, ftCurrency, ftBCD...

Como recuperar a quantidade de casas decimais do campo?

 

Pelo DBExplorer, por exemplo, sei que um campo, p.e., precocusto é do tipo Numerico, tamanho = 14 (size), quatro casas decimais (scale=4)...

 

Como recuperar essa informacao pelo Delphi?

 

No caso,

iFieldG   := 14;  iSize	 := table1.Fields[iFieldG].Size;  iDataSize := table1.Fields[iFieldG].DataSize;  ShowMessage(table1.Fields[iFieldG].DisplayName+'='+			  'iDataSize='+IntToStr(iDataSize)+			  'iSize='+IntToStr(iSize));

Se o campo é string (char) de 13 caracteres (codigoean), DataSize = 14 e Size = 13

Se logico (boolean), retorna DataSize=2 e Size =0

Se Data (datetime), retorna DataSize=4 e Size =0

Se Inteiro (integer), retorna DataSize=2 e Size =0

e assim por diante...

 

O caso é... onde fica a quantidade de casas decimais?

 

Grato por qualquer ajuda!!!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso pode variar, pois você pode criar o campo no banco como Double Precision e ele armazenar várias casa decimais, ao menos que crie campo que você delimita o n° máximo de casas decimais, mas fora isto não vai ter um n° exato de casas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

function RetornaPrecisao(Sender: TField):integer;

begin

Result := 0;

 

if not Sender is TFMTBCDField then Exit;

 

Result := TFMTBCDField(Sender).Precision;

end;

 

Para chamar a função: RetornaPrecisao(DataSet.Fields.Fields[índice]); {DataSet = Query, ClientDataSet, Etc.}

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.