Fórum diferença na soma.. #257810
10/11/2004
0
bom dia galera..
estou fazendo uma consulta mas está dando diferença de 1centavo na somatória de algumas notas..
como são mtas no final acaba sendo ruim isso..
estou usando a seguinte query
DTMDB.QResumoNota.Close;
DTMDB.QResumoNota.SQL.Clear;
DTMDB.QResumoNota.SQL.Add(´SELECT CUPOMFISCAL.CODCENTROCUSTO, SUM(ITENS.QTDADE) AS QUANTIDADE,[b:40e00868e8]SUM(ITENS.QTDADE*ITENS.PRECO) AS PREÇO[/b:40e00868e8],´);
DTMDB.QResumoNota.SQL.Add(´CENTROCUSTO.NOME,NOTAFISCAL.CODLOCAL,NOTAFISCAL.TEXTO FROM CUPOMFISCAL,CENTROCUSTO,ITENS,NOTAFISCAL´);
DTMDB.QResumoNota.SQL.Add(´WHERE CUPOMFISCAL.NOTAFISCAL=:COD AND CUPOMFISCAL.CODIGO = ITENS.NUMCUPOM AND´);
DTMDB.QResumoNota.SQL.Add(´CUPOMFISCAL.CODCENTROCUSTO = CENTROCUSTO.CODCENTROCUSTO AND CUPOMFISCAL.NOTAFISCAL = NOTAFISCAL.CODNOTA GROUP BY CUPOMFISCAL.CODCENTROCUSTO,CENTROCUSTO.NOME,NOTAFISCAL.CODLOCAL,NOTAFISCAL.TEXTO´);
DTMDB.QResumoNota.ParamByName(´COD´).ASSTRING:= DTMDB.NotaFiscalCodNota.AsString;
DTMDB.QResumoNota.PREPARE;
DTMDB.QResumoNota.OPEN;
na parte que tá em negrito é o campo que tá a tal diferença..
pq fica umas multiplicações do tipo;
qtdade valor
22,315 2,198
no final tem que dar um valor com duas casas..
no dbgrid dá certo pois faço isso:
procedure TDTMDB.ItensCalcFields(DataSet: TDataSet);
var temp: real;
temp2:string;
begin
temp:=DTMDB.ItensQtdade.Value * DTMDB.ItensPreco.Value;
temp2:= floattostr(temp);
DTMDB.ItensValortotal.Value:= strtofloat(formatfloat(´#,,0.00´,strtofloat(temp2)));
end;
mas na query não estou conseguindo..
valeu
Eric
estou fazendo uma consulta mas está dando diferença de 1centavo na somatória de algumas notas..
como são mtas no final acaba sendo ruim isso..
estou usando a seguinte query
DTMDB.QResumoNota.Close;
DTMDB.QResumoNota.SQL.Clear;
DTMDB.QResumoNota.SQL.Add(´SELECT CUPOMFISCAL.CODCENTROCUSTO, SUM(ITENS.QTDADE) AS QUANTIDADE,[b:40e00868e8]SUM(ITENS.QTDADE*ITENS.PRECO) AS PREÇO[/b:40e00868e8],´);
DTMDB.QResumoNota.SQL.Add(´CENTROCUSTO.NOME,NOTAFISCAL.CODLOCAL,NOTAFISCAL.TEXTO FROM CUPOMFISCAL,CENTROCUSTO,ITENS,NOTAFISCAL´);
DTMDB.QResumoNota.SQL.Add(´WHERE CUPOMFISCAL.NOTAFISCAL=:COD AND CUPOMFISCAL.CODIGO = ITENS.NUMCUPOM AND´);
DTMDB.QResumoNota.SQL.Add(´CUPOMFISCAL.CODCENTROCUSTO = CENTROCUSTO.CODCENTROCUSTO AND CUPOMFISCAL.NOTAFISCAL = NOTAFISCAL.CODNOTA GROUP BY CUPOMFISCAL.CODCENTROCUSTO,CENTROCUSTO.NOME,NOTAFISCAL.CODLOCAL,NOTAFISCAL.TEXTO´);
DTMDB.QResumoNota.ParamByName(´COD´).ASSTRING:= DTMDB.NotaFiscalCodNota.AsString;
DTMDB.QResumoNota.PREPARE;
DTMDB.QResumoNota.OPEN;
na parte que tá em negrito é o campo que tá a tal diferença..
pq fica umas multiplicações do tipo;
qtdade valor
22,315 2,198
no final tem que dar um valor com duas casas..
no dbgrid dá certo pois faço isso:
procedure TDTMDB.ItensCalcFields(DataSet: TDataSet);
var temp: real;
temp2:string;
begin
temp:=DTMDB.ItensQtdade.Value * DTMDB.ItensPreco.Value;
temp2:= floattostr(temp);
DTMDB.ItensValortotal.Value:= strtofloat(formatfloat(´#,,0.00´,strtofloat(temp2)));
end;
mas na query não estou conseguindo..
valeu
Eric
Eric.miranda
Curtir tópico
+ 0
Responder
Posts
10/11/2004
Osocram
Bom... pod acontecer por causa do arredondamento.... q a formatacao faz....
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)