Problema c/ campo float
Uso Firebird 1.5 e Delphi 6.
Tenho tabelas que usam campos decimais(12,2),para guardar valores.
Passo esses valores por variavies do tipo double, devido a um problema nos relatorios, não consigo fazer soma de campos do tipo decimal.
Vi aqui no forum que se mudasse os campos para float funcionaria.
Mudei os campos, mas quando passo os valores das variaveis do tipo double ou converto uma string para float ele grava no banco um valor deste tipo:9999237061 quando deveria gravar 20,33.
Ex.:soma_valor:=strtofloat(edit1.text)
Queria saber se posso usar double para campos tipo float.
Quando uso decimal no banco funciona normal só que o relatório não faz o SUM.
Espero que tenha consiguido explicar.
Obrigado
Tenho tabelas que usam campos decimais(12,2),para guardar valores.
Passo esses valores por variavies do tipo double, devido a um problema nos relatorios, não consigo fazer soma de campos do tipo decimal.
Vi aqui no forum que se mudasse os campos para float funcionaria.
Mudei os campos, mas quando passo os valores das variaveis do tipo double ou converto uma string para float ele grava no banco um valor deste tipo:9999237061 quando deveria gravar 20,33.
Ex.:soma_valor:=strtofloat(edit1.text)
Queria saber se posso usar double para campos tipo float.
Quando uso decimal no banco funciona normal só que o relatório não faz o SUM.
Espero que tenha consiguido explicar.
Obrigado
Gameiro
Curtidas 0
Respostas
Jc_analista
22/12/2004
Caro colega, utilizo firebird 1.5 também e no banco de dados uso campos Numeric(15,2) e no delphi uso variaveis do tipo Real.
Quando vou passar paramêtros para stored procedures no delphi faço da seguinte maneira: stored.parambyname(´valor´).ascurrency:=strtofloat(edvalor.text);
Faço assim e dá certo, espero q tenha te ajudado.
Quando vou passar paramêtros para stored procedures no delphi faço da seguinte maneira: stored.parambyname(´valor´).ascurrency:=strtofloat(edvalor.text);
Faço assim e dá certo, espero q tenha te ajudado.
GOSTEI 0
Gameiro
22/12/2004
Tentei deste jeito e não deu certo.
O tipo que eu uso é decimal(12,2) para gravar valores.
O problema é que usando este tipo de campo não consigo fazer soma no relatório tanto em quickreport quanto no fortes report.
Se o tipo de campo for float no banco o relatorio funciona, fiz testes inserindo valores direto no banco.
Uso esse código para passar como parametro
a variavel soma_valor é do tipo double e o campo total é do tipo float,
datamodule1.SQLDataSet2.ParamByName(´total´).AsCurrency:=soma_valor;
do jeito que está acima ele grava no banco um valor doido, 9996185303 quando deveria garvar 20,33
se eu fizer usando um campo tipo decimal ele grava corretamente.
Se alguem tiver uma solução para conseguir fazer a soma no relatório usando decimal é melhor ainda pois não preciso mudar todo o meu banco
O tipo que eu uso é decimal(12,2) para gravar valores.
O problema é que usando este tipo de campo não consigo fazer soma no relatório tanto em quickreport quanto no fortes report.
Se o tipo de campo for float no banco o relatorio funciona, fiz testes inserindo valores direto no banco.
Uso esse código para passar como parametro
a variavel soma_valor é do tipo double e o campo total é do tipo float,
datamodule1.SQLDataSet2.ParamByName(´total´).AsCurrency:=soma_valor;
do jeito que está acima ele grava no banco um valor doido, 9996185303 quando deveria garvar 20,33
se eu fizer usando um campo tipo decimal ele grava corretamente.
Se alguem tiver uma solução para conseguir fazer a soma no relatório usando decimal é melhor ainda pois não preciso mudar todo o meu banco
GOSTEI 0