diferença na soma..
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
Curtidas 0
Respostas
Osocram
10/11/2004
Bom... pod acontecer por causa do arredondamento.... q a formatacao faz....
GOSTEI 0