Campo numérico no DBGrid
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?
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
Curtidas 0
Respostas
Deryck
18/08/2004
posta melhor isso, poste o codigo,,que isso era pra ser bem simples!
GOSTEI 0
Carlosfim
18/08/2004
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:
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:
Onde 6 é o índice do campo LIMITECREDITO.
Tentei também pelo nome do Campo:
E tentei também alterar a 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.
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.
GOSTEI 0
Deryck
18/08/2004
Quando você executa aaplicação , voce verifico se ele ta passando pelas linhas que moidifcam as mascaras?
GOSTEI 0
Carlosfim
18/08/2004
Sim, tá passando com certeza!!
GOSTEI 0
Deryck
18/08/2004
To meio apertado,,,vo olha e depois te falo,,,,qualquer coisa ,,me lembra aqui! jordano.soares@csnet.com.br
GOSTEI 0