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

20/08/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!!!


Hviana

Respostas

20/08/2004

Lucas Silva

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



Responder Citar

20/08/2004

Vinicius2k

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 :
Format(´¬4.4d´,&91;StrToInt(SUA_VAR_STRING)&93;)

ou
Format(´¬4.4d´,&91;(SUA_VAR_INTEGER)&93;)


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 :
Format(´¬4.4d´,[(SEU_CAMPO_INTEGER)&93;)


T+


Responder Citar

20/08/2004

Rockbilly

Olá colega, fiz uma função aqui, deve resolver tenta ai:
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;



Responder Citar