Array
(
)

Como gravar campo numério sempre em 4 casas decimais....

Hviana
   - 20 ago 2004

pessoal tenho um campo numérico...preciso q qndo o usuário digitar um número de 1 (uma) casa decimal ele grave sempre em 4 (quatro) casas decimais. :roll:

ex: usuario digita 1...delphi grava no banco 0001
usuario digita 10...delphi grava no banco 0010
usuario digita 100...delphi grava no banco 0100
usuario digita 1000...delphi grava no banco 1000

OBS: Utilizo o FireBird 1.0 como Bd!!!


Lucas Silva
   - 20 ago 2004

um exemplo;
#Código

query.FieldByName(´Campo´).AsString := FormatFloat(´0.0000´, StrToFloat(edit.text);



Vinicius2k
   - 20 ago 2004

Colega,
Creio que vc esteja enganado...
Isso não são casas decimais... são ´zeros à esquerda´... e se este campo no banco for do tipo Inteiro, vc nunca vai conseguir gravar desta forma...

Se for apenas para efeitos de exibição e edição, em componentes data-aware, como códigos por exemplo, utilize as propriedades DisplayFormat e EditFormat do TField...
No exemplo que vc citou a máscara seria #0000...

Se vc realmente quiser gravar assim no banco, vai precisar mudar o tipo de dado para Varchar, e formatar antes de gravar com algo parecido com isto :
#Código

Format(´¬4.4d´,[StrToInt(SUA_VAR_STRING)])

ou
#Código
Format(´¬4.4d´,[(SUA_VAR_INTEGER)])


Caso vc não queira mudar o tipo de dado no banco, mas precise desta formatação para outra coisa qualquer, como gerar um arquivo texto, ou imprimir, por exemplo, use :
#Código
Format(´¬4.4d´,[(SEU_CAMPO_INTEGER)])


T+


Rockbilly
   - 20 ago 2004

Olá colega, fiz uma função aqui, deve resolver tenta ai:
#Código

function campoF(valor: integer): string;
var
n: integer;
x: string;
begin
n:= Length(IntToStr(valor));
case n of
1: x:= ´000´+IntToStr(valor);
2: x:= ´00´+IntToStr(valor);
3: x:= ´0´+IntToStr(valor);
else
x:= IntToStr(valor);
end;

campoF := x;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
begin
str:= campoF(StrToInt(Edit1.Text));
ShowMessage(str);

end;