Fórum Arredondamento de valores de um banco #344775
21/08/2007
0
Po to com o seguinte problema, tenho que fazer uma tabela do CDE (Negociação, Compras & estoque) não sei se vc´s conhecem mais é praticamento uma planilha com alguns campos.
O problema é o seguinte eu descobri o consumo medio da empresa em 1 Mês, porem preciso passar esse valor p/ dias, mas quando divido o resultado dessa equação:
[i:eff427e122](Sum(ip.Quantidadeloja + ip.QuantidadeDeposito))/ ´+ IntToStr( iQtdeMes ) + ´) As Media,´ ); [/i:eff427e122]
Por 30, o resultado que tenho é muito pequeno do tipo 0,4 ou 0,3 preciso arredondar essa valor sempre p/ o maior numero mais proximo como nos exemplos acima preciso arredondar o valor p/ 1.
Alguém sabe uma maneira de me ajudar ?!
Valew pessoal
Ederp
Curtir tópico
+ 0Posts
21/08/2007
Vitor Alcantara
function Arredonda(Valor:Double):Double;
var
sStr:String;
vlr1,Vlr2:Double;
begin
sStr := FloatToStrf(valor,ffFixed,10,2);
sStr := copy(sStr,Length(sStr)-1,length(sStr));
vlr1 := strToFloat(sStr);
if vlr1 > 0 then
vlr1 := 100- vlr1;
vlr2 := StrTofloat(sStr) + vlr1/100;
result := vlr2;
end;
Gostei + 0
21/08/2007
Ederp
To fazendo os calculos direto no banco de dados, ip.Quantidadeloja e ip.QuantidadeDeposito são campos de uma tabela em Sql.
Já tentei usar o Round mas não funciona !!
Porque eu preciso do seguinte, preciso de uma media de vendas por dia, ai o resultado da equação
[i:7d2173a6ff](Sum(ip.Quantidadeloja + ip.QuantidadeDeposito)) / ´ + IntToStr( iQtdeMes ) + ´) As Media,´ );[/i:7d2173a6ff]
Da valores reais tipo 0,5 ou 0,4, então preciso arredondar esse valor p/ o maior valor mais proximo ou seja 1 !
Gostei + 0
21/08/2007
Vitor Alcantara
Gostei + 0
21/08/2007
Ederp
Gostei + 0
21/08/2007
Vitor Alcantara
Da uma olhada a idéia é a mesma.
DECLARE @QTD FLOAT DECLARE @QTD1 FLOAT SET @QTD = 1.9 SELECT CASE WHEN CONVERT ( INT , CONVERT(DECIMAL(10,2), RIGHT(STR (@QTD,10,2),2 ) ) ) <> 0 THEN (CONVERT ( DECIMAL (10,2) , (100 - CONVERT ( INT , CONVERT(DECIMAL(10,2), RIGHT(STR (@QTD,10,2),2 ) ) ) ))/100) + @QTD ELSE @QTD END
No exemplo eu utilizei uma variavel que eu criei mais poderia ser o resultado de uma conta no banco (ficaria mais longo ainda).
Eu acho que deva ter um modo mais simplificado de fazer isso, mais no momento eu desconheço.
Por que você não cria uma tabela temporária e com a utilização de um laço/cursor você não joga os dados já tratado nela e da um select na mesma?
Gostei + 0
21/08/2007
Ederp
Mas blz vo tentar fazer isso aqui, usar a tabela temporária é um poco mais complicado pois tenho mais calculos, mas ta tranquilo se não tiver outra solução a solução será essa mesma !!
Valew velho pela Força !
Um abraço !
Gostei + 0
21/08/2007
Emerson Nascimento
[i:d275a9bcf0]Round( (Sum(ip.Quantidadeloja + ip.QuantidadeDeposito) / ´+ IntToStr( iQtdeMes ) + ´) + 0.4, 0) As Media,´[/i:d275a9bcf0]
Gostei + 0
21/08/2007
Ederp
[i:15a138e45b]The Round Function requires 2 to 3 arguments
Incorrect Sintax near ´/´ [/i:15a138e45b]
e nem imagino o que seja isso !!
Gostei + 0
21/08/2007
Emerson Nascimento
Round( [b:a0bb8feedf][color=darkblue:a0bb8feedf](Sum(ip.Quantidadeloja + ip.QuantidadeDeposito) / X ) + 0.4[/color:a0bb8feedf][/b:a0bb8feedf], [b:a0bb8feedf][color=green:a0bb8feedf]0[/color:a0bb8feedf][/b:a0bb8feedf]) As Media
talvez esteja faltando algo, visto que você não deve ter publicado a instrução completa.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)