Campo numérico no DBGrid

18/08/2004

0

Tenho um DbGrig ligado a uma consulta (ibQuery) e um dos campos dessa consulta é do tipo Float.
Quando este campo é exibido ele aparece apenas com a vírgula decimal, ignorando casas decimais caso estas sejam zero e sem separadores de milhar. Resumindo:

Aparece assim: 1200 /5,5
Deve aparecer assim: R$ 1.200,00 / R$ 5,50 (nem precisa do R$ se não der)

Pesquisei alguns tópicos no fórum onde a solução apresentada era alterar a propriedade Currency do campo desejado ou adicionar ao campo uma EditMask.
O problema é que no meu caso não se trata de uma tabela, e sim de uma consulta, e este objeto realiza várias consultas diferentes, então não existem campos fixos.

O que eu faço?


Carlosfim

Carlosfim

Responder

Posts

18/08/2004

Deryck

posta melhor isso, poste o codigo,,que isso era pra ser bem simples!


Responder

18/08/2004

Carlosfim

Vamos lá:

Tenho um DataModule com um Componente IBQuery. Este componente é responsável pela realização de várias consultas a várias tabelas de um banco de dados InterBase.

Quando quero executar uma consulta, faço o seguinte:
   Consulta.SQL.Clear;
   IBQuery.SQL.Add(´SELECT NOME, LIMITECREDITO FROM CLIENTES´);
   IBQuery.Open;


Este componente (IBQuery), por sua vez, está ligado a um DataSource, que está ligado a um DBGrig.

Gostaria de exibir o campo LIMITECREDITO em formato de moeda.

Exemplo1: Para um limite de R$ 1.500,00 gostaria de exibir 1.500,00, mas ele aparece no grid como 1500
Exemplo2: Para um limite de R$ 75,20, gostaria de exibir 75,20, mas ele exibe 75,2

O campo LIMITECREDITO está declarado no banco de dados como Numeric(15,2). Já li um tópico em que a solução apontada foi abrir o FieldsEditor do DataSet e setar como True a propriedade Currency do campo LIMITECREDITO. O problema é que meu DataSet (IBQuery) não possui campos, pois a consulta muda de acordo com a necessidade do cliente. Mesmo assim, em uma determinada consulta onde eu sei o índice dos campos retornados, tentei o seguinte:

IBQuery.Fields.Fields[6].SetFieldType(ftCurrency);

Onde 6 é o índice do campo LIMITECREDITO.
Tentei também pelo nome do Campo:
Consulta.FieldByName(´LIMITECREDITO´).SetFieldType(ftCurrency);

E tentei também alterar a máscara:
Consulta.FieldByName(´LIMITECREDITO´).EditMask := ´Máscara´;


porém, ele age como se o código nem existisse. No caso da máscara, tentei vários tipos de máscara e nada.

não sei mais o que tentar!!!!

qualquer ajuda será bem vinda.


Responder

18/08/2004

Deryck

Quando você executa aaplicação , voce verifico se ele ta passando pelas linhas que moidifcam as mascaras?


Responder

18/08/2004

Carlosfim

Sim, tá passando com certeza!!


Responder

18/08/2004

Deryck

To meio apertado,,,vo olha e depois te falo,,,,qualquer coisa ,,me lembra aqui! jordano.soares@csnet.com.br


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar