Formatar BDText´s

Firebird

10/02/2005

Como formato um DBText para valores monetários, tipo mostrar ao menos 2 casas decimais sempre ou 3 ... nao precisa o sinal de R$ ?


Tuskinhu

Tuskinhu

Curtidas 0

Respostas

Renato_sp

Renato_sp

10/02/2005

Defini o campo do tipo numeric (12,2) e no delphi coloca a propriedade do TField como currency para true que o proprio delphi poe a mascara
R$ 0,00, espero ter ajudado..

Falow

Renato/SP


GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

Nao entendi como fazer.. vou colocar como eu estou usando...
DBExpress ( SqlConnection -> SQLQuery -> DataProvider -> CliDataSet -> DataSource )

Destes somente o DataSource esta na tela da consulta e o resto em um data module...

Aqui como eu uso o código:

  try
    Bd.CtoCDS.Close;
    with BD.CtoQry do
    begin
      Close;
      SQL.Clear;
      SQL.Text := ´Select CTO.SERIE, CTO.EMISSAO, ...´
    end;  // Qry
    Bd.CtoCDS.Open;
  except
    on E: Exception do
    begin
      MsgError(´Erro na consulta de dados do conhecimento.´ + #1313 +
               ´SQL: ´ + Bd.CtoQry.SQL.Text + 1313 +
               ´Erro compilador: ´ + E.Message );
    end;
  end;


Onde encaixo essas mudanças?? NO caso o nome do campo q eu quero aplicar é TOTAL_PRESTACAO para que saia com 2 casas.


GOSTEI 0
Fsflorencio

Fsflorencio

10/02/2005

O Renato_SP disse para alterar no fieldlist da query a propriedade currency do field que vc deseja alterar.

Se vc não quiser que apareça o símbolo monetário, vc pode colocar na propriedade EditFormat e DisplayFormat do TField o seguinte: #,0.00 que ele vai ficar formatado com duas casas decimais.


GOSTEI 0
Renato_sp

Renato_sp

10/02/2005

É isso ae... fsflorencio, acho que a melhor forma de se fazer isso é como definimos !!! tanto com R$ ou nao... é o mais pratico...
:D

Renato / SP


GOSTEI 0
Rodolpho123

Rodolpho123

10/02/2005

Lembrando que a propriedade [b:0b26b4ed2a]Currency[/b:0b26b4ed2a] lê o a formatação monetária do Windows, e a DisplayFormat fica [b:0b26b4ed2a]fixa[/b:0b26b4ed2a] no código. Caso um dia a moeda mude de formato, o [b:0b26b4ed2a]DisplayFormat[/b:0b26b4ed2a] vai ter que mudar tmb....


GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

mas os TFields nao aparecem pra mim, pq o comando SQL só é executado em runtime, e nao em design, e eu nao sei como se adiciona em runtime,, se vc puder me colocar um exemplo..


GOSTEI 0
Gandalf.nho

Gandalf.nho

10/02/2005

Use FieldByName para se referir aos Fields em tempo de execução e setar suas propriedades


GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

acho que o carnaval me deixou lento... nao consegui achar como colocar as configuracoes...

vc pode me dar o exemplo?

DataModule: BD
ClientDataSet:CtoCDS

ai eu usaria Bd.CtoCDs.FieldByName(´Total_Prestacao´)....

dai eu nao consegui mais nada...


GOSTEI 0
Afarias

Afarias

10/02/2005

BD.CtoCDs.FieldByName(´Total_Prestacao´).Currency := True;

ou

BD.CtoCDs.FieldByName(´Total_Prestacao´).DisplayFormat := ´R$ ,#0.00´;


T+


GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

AFarias:

BD.CtoCDs.FieldByName(´Total_Prestacao´).Currency := True;
Erro: Undeclared Identifier : ´Currency´

ou

BD.CtoCDs.FieldByName(´Total_Prestacao´).DisplayFormat := ´R$ ,#0.00´;

Erro: Undeclared Identifier : ´DisplayFormat´

Deram erros os 2!


GOSTEI 0
Afarias

Afarias

10/02/2005

Deve ser por causa do tipo de campo (TField)

não são todos eles q tem essas propriedades -- por exemplo, campos ´texto´ (TStringField) não tem.


T+


GOSTEI 0
Rodolpho123

Rodolpho123

10/02/2005

Tuskinhu, tente fazer isto no evento [b:287da49f0f]AfterOpen[/b:287da49f0f] do seu Cds:

TFloatField( DataSet.FieldByName.(´SEUCAMPO´) ).DisplayFormat := ´R$ #,0.00´;
ou
TFloatField( DataSet.FieldByName.(´SEUCAMPO´) ).Currency := True;



GOSTEI 0
Tuskinhu

Tuskinhu

10/02/2005

Rodolpho123, valeu mesmo !!! Funcionou como eu desejava !!!

Obrigado a vc e ao AFarias pela ajuda !!!!


Abraços!!!!


GOSTEI 0
POSTAR