Relatorio com coluna de pocentagem
Cliente Peso Valor Total
No final do relatório tem a soma do peso e do valor total, porém preciso colocar uma coluna com o valor médio do peso, ou seja, valor total / peso e outra com a porcentagem do valor total, ou seja, valor total / soma total do valor / 100
Não estou conseguindo, alguém pode me ajudar, ou já fez algo parecido.
Valdecir Peres
Respostas
Valdecir Peres
22/10/2012
Ninguém
Gilvanio Gonçalves
22/10/2012
Ninguém
Seja um pouco mais expecifico ao que precisa, que talvez eu possa te ajudar.
Cliente Peso Valor Total
Isto é para academia?
o peso, é peso da Passoa?
onde valor total, é valor total de quê?
vc quer saber o peso médio a partir de qual valor?
o percentual vc cita do valor total, mas qual é este valor total?
este valores, peso e valor total esta em uma tabela?
Tiago
22/10/2012
Alisson Santos
22/10/2012
Valdecir Peres
22/10/2012
Tenho uma tabela com diversas colunas, porém preciso montar um relatório por período demonstrando a movimentação existente conforme abaixo:
1 2
Cliente Peso Rec. % Valor Valor Médio Qtde.
xxxxxx 10.500,000 73,991 8.000,00 1,313 1.500
yyyyyy 40,500 0,285 200,00 0,203 20
wwww 1.000,000 7,047 900,00 1,111 2.520
zzzzzzz 2.650,400 18,677 1.100,00 2,409 986
Total 14.190,900 100,000 10.200,00 5,036 5.026
1 – Como calcular a porcentagem ?? – (peso rec /peso total) * 100
2 – Como calcular o valor médio ??? – (peso rec /valor)
A soma do total é tranquilo o próprio report faz, porém os outros cálculos não sei como fazer, já criei um dataset e consegui fazer a soma da qtde e peso rec por cliente, porém, na parte da porcentagem e do valor médio não sei como fazer.
Abraço
Valdecir
Valdecir Peres
22/10/2012
Tenho uma tabela com diversas colunas, porém preciso montar um relatório por período demonstrando a movimentação existente conforme abaixo:
1 2
Cliente Peso Rec. % Valor Valor Médio Qtde.
xxxxxx 10.500,000 73,991 8.000,00 1,313 1.500
yyyyyy 40,500 0,285 200,00 0,203 20
wwww 1.000,000 7,047 900,00 1,111 2.520
zzzzzzz 2.650,400 18,677 1.100,00 2,409 986
Total 14.190,900 100,000 10.200,00 5,036 5.026
1 – Como calcular a porcentagem ?? – (peso rec /peso total) * 100
2 – Como calcular o valor médio ??? – (peso rec /valor)
A soma do total é tranquilo o próprio report faz, porém os outros cálculos não sei como fazer, já criei um dataset e consegui fazer a soma da qtde e peso rec por cliente, porém, na parte da porcentagem e do valor médio não sei como fazer.
Abraço
Valdecir
Valdecir Peres
22/10/2012
Tenho uma tabela com diversas colunas, porém preciso montar um relatório por período demonstrando a movimentação existente conforme abaixo:
1 2
Cliente Peso Rec. % Valor Valor Médio Qtde.
xxxxxx 10.500,000 73,991 8.000,00 1,313 1.500
yyyyyy 40,500 0,285 200,00 0,203 20
wwww 1.000,000 7,047 900,00 1,111 2.520
zzzzzzz 2.650,400 18,677 1.100,00 2,409 986
Total 14.190,900 100,000 10.200,00 5,036 5.026
1 – Como calcular a porcentagem ?? – (peso rec /peso total) * 100
2 – Como calcular o valor médio ??? – (peso rec /valor)
A soma do total é tranquilo o próprio report faz, porém os outros cálculos não sei como fazer, já criei um dataset e consegui fazer a soma da qtde e peso rec por cliente, porém, na parte da porcentagem e do valor médio não sei como fazer.
Abraço
Valdecir
Alisson Santos
22/10/2012
Precisando de auxilio me add ai alisson@uniontecnologia.com.br
Claudia Nogueira
22/10/2012
Depois você vai na aba cálculo, no grupo detail, seleciona a variável, clica com o botão direito e depois em novo.
Vai criar embaixo uma parte pra digitar código (Value := ). Aí é só você colocar a fórmula.
Value := (Pipe['peso_rec'] / Pipe['peso_total']) * 100;
Depois coloca mais uma variável para fazer o outro cálculo.
Como não sei os nomes dos campos nem do pipeline, você tem que trocar ali na fórmula.
Pra saber se não tem erro, você clica na variável com o botão direito em variáveis em detalhe e depois em compilar.
Se tiver algum erro vai aparecer uma mensagem bem embaixo.
Valdecir Peres
22/10/2012
Segui a orientação da Claudiadnh, porém ao gerar o relatório o valor da porcentagem vem zero
Segue abaixo procedure :
procedure porcentagemOnCalc(var Value: Variant);
begin
Value := (peso/total)*100;
end;
Compilo normal, onde esta o erro
Abraço
Valdecir
Claudia Nogueira
22/10/2012
Nesse print coloquei a aba cálculo do report builder. Está vendo do lado direito embaixo o campos?
Aí eu arrastei o campo CNPJ ali no Value := pipGeral['CPF_CNPJ'];
[url]http://ow.ly/i/13YFi [/url]
Fiz isso só pra demonstrar o uso dos campos. No meu caso se eu tivesse os campos peso e total no banco de dados, a fórmula ficaria assim: Value := pipGeral['peso'] / pipGeral['total'] / 100;
Segui a orientação da Claudiadnh, porém ao gerar o relatório o valor da porcentagem vem zero
Segue abaixo procedure :
procedure porcentagemOnCalc(var Value: Variant);
begin
Value := (peso/total)*100;
end;
Compilo normal, onde esta o erro
Abraço
Valdecir
Valdecir Peres
22/10/2012
O campo "peso" é do pipeline o "total" é um DBcalc que faz a soma do campo peso.
Tem como funcionar ??
abraço
Valdecir
Claudia Nogueira
22/10/2012
Exemplo:
Value := (peso.value / total.value) * 100;
O campo "peso" é do pipeline o "total" é um DBcalc que faz a soma do campo peso.
Tem como funcionar ??
abraço
Valdecir
Valdecir Peres
22/10/2012
Funcionou,porém esta calculando errado, veja abaixo como fica
Peso Porcentagem
40 100,00%
40 50,00%
40 33,33%
Total 120
Deveria aparecer 33,33% em todos, já coloquei para calcular no final do relatório, só que desta forma os valores ficam zerado.
Só mais uma dúvida, tem como somar a coluna de porcentagem ??
Abraço
valdecir
Claudia Nogueira
22/10/2012
O ideal mesmo, para o relatório ficar mais rápido, é evitar os campos calculados.
Fiz um exemplo com os cálculos direto na sentença SQL.
Esse exemplo está com base no meu entendimento sobre suas explicações.
Qualquer dúvida é só postar novamente.
[url]www.cdnweb.com.br/ExemploReport.rar[/url]
Marco Salles
22/10/2012
O ideal mesmo, para o relatório ficar mais rápido, é evitar os campos calculados.
Fiz um exemplo com os cálculos direto na sentença SQL.
Esse exemplo está com base no meu entendimento sobre suas explicações.
Qualquer dúvida é só postar novamente.
[url]www.cdnweb.com.br/ExemploReport.rar[/url]
Muito prestativa e entendida esta menina , não ???
Valdecir Peres
22/10/2012
Hoje estou com o dia corrido, mas vou olhar seu exemplo e retorno pra falar algo.
Marco com certeza a Claudia é 1000.
Abraço
Valdecir Peres
22/10/2012
Fui olhar seu exemplo, mas infelizmente não tenho Firebird e nunca mexi com o mesmo, minha base é Mysql.
A minha estrutura para montar o relatório esta da seguinte forma:
TSQLQuery
TClientDataSet
TDataSource
Uso a Query para montar os grupos e posteriormente gravo em um ClientDataSet para puxar o relatório conforme código abaixo:
with QRitens do
begin
close;
sql.clear;
sql.add ('select (clente)as cliente, sum(peso)as peso, sum(qtde) as qtde from itensordserv');
sql.add ('WHERE datainproc>=:DTPinicio and datainproc<=:DTPfinal group by cliente order BY cliente');
Params.ParamByName('DTPinicio').AsDate :=DTPinicio.Date;
Params.ParamByName('DTPfinal').AsDate :=DTPfinal.Date;
open;
end;
cdsrecitens.Open;
cdsrecitens.EmptyDataSet;
QRitens.First;
while not QRitens.Eof do
Begin
cdsrecitens.Insert;
cdsrecitenstratamento.Value := QRitens.FieldByName('tratamento').Value;
cdsrecitenspeso.Value := QRitens.FieldByName('peso').Value;
cdsrecitensqtde.Value := QRitens.FieldByName('qtde').Value;
cdsrecitens.Post;
QRitens.Next;
End;
Porém após formar os grupos, não sei como faz para somar os mesmos e calcular a porcentagem de cada um.
Abraço
Claudia Nogueira
22/10/2012
[url]www.cdnweb.com.br/ExemploReportMySql.rar[/url]
Tem um arquivo chamado alunos.sql que é o backup do BD que eu criei pra fazer o exemplo.
Estou usando o componente AdoConnection juntamente com um ODBC chamado alunos.
Valdecir Peres
22/10/2012
É exatamente o que estou querendo, mas desculpe, não entendi onde calcula.
Abraço
Claudia Nogueira
22/10/2012
Dá uma olhadinha na propriedade SQL.
É exatamente o que estou querendo, mas desculpe, não entendi onde calcula.
Abraço
Valdecir Peres
22/10/2012
Olhei a sentença SQL , mas não sei como adaptar isto aqui.
Como te falei tenho uma tabela com N colunas, onde filtro por período conforme post abaixo:
A minha estrutura para montar o relatório esta da seguinte forma:
TSQLQuery
TClientDataSet
TDataSource
Uso a Query para montar os grupos e posteriormente gravo em um ClientDataSet para puxar o relatório conforme código abaixo:
with QRitens do
begin
close;
sql.clear;
sql.add ('select (clente)as cliente, sum(peso)as peso, sum(qtde) as qtde from itensordserv');
sql.add ('WHERE datainproc>=:DTPinicio and datainproc<=:DTPfinal group by cliente order BY cliente');
Params.ParamByName('DTPinicio').AsDate :=DTPinicio.Date;
Params.ParamByName('DTPfinal').AsDate :=DTPfinal.Date;
open;
end;
cdsrecitens.Open;
cdsrecitens.EmptyDataSet;
QRitens.First;
while not QRitens.Eof do
Begin
cdsrecitens.Insert;
cdsrecitenstratamento.Value := QRitens.FieldByName('tratamento').Value;
cdsrecitenspeso.Value := QRitens.FieldByName('peso').Value;
cdsrecitensqtde.Value := QRitens.FieldByName('qtde').Value;
cdsrecitens.Post;
QRitens.Next;
End;
Como eu somo os grupos antes de transferir para o ClientDataSet e desta forma calcular a porcentagem.
Abraço
Claudia Nogueira
22/10/2012
Valdecir Peres
22/10/2012
Abraço
Claudia Nogueira
22/10/2012
Abraço
Valdecir Peres
22/10/2012
Assunto - Fórum DevMedia(Relat. com porcentagem)
Abraço
Claudia Nogueira
22/10/2012
with QRitens do
begin
close;
sql.Text := 'SELECT CLIENTE, SUM(PESO) PESO, SUM(PESO * 100 / (SELECT SUM(PESO) FROM itensordservpht)) AS PESO_PERC, ' +
' SUM(PESO / VALOR) AS VALOR_MEDIO, SUM(VALOR), SUM(QTDE) ' +
' FROM itensordservpht ' +
' WHERE (datainproc >=:DTPinicio) ' +
' AND (datainproc <=:DTPfinal) ' +
'GROUP BY CLIENTE ';
Params.ParamByName('DTPinicio').AsDate :=DTPinicio.Date;
Params.ParamByName('DTPfinal').AsDate :=DTPfinal.Date;
open;
end;
Depois desse código chamaria o relatório, eliminando tudo que está depois.
Valdecir Peres
22/10/2012
Legal funcionou, só tive que fazer uma correção, pois estava calculando a porcentagem pelo total da tabela.
Ficou assim:
'and (datainproc <=:DTPfinal))) as peso_porc, '
Anterior
SUM(PESO * 100 / (SELECT SUM(PESO) FROM itensordservpht))
Quanto a puxar o relatório após o código, estou recebendo esta mensagem de erro
Exception class EDatabaseError with message 'Operation not allowed on a unidirectional dataset'.
Aproveitando sei que foge um pouco do assunto, mas qual o tipo de campo indicado para
“peso e valor financeiro” uso FLOAT porém no seu exemplo observei que você usou DOUBLE.
Abraço
Claudia Nogueira
22/10/2012
Legal funcionou, só tive que fazer uma correção, pois estava calculando a porcentagem pelo total da tabela.
Ficou assim:
'and (datainproc <=:DTPfinal))) as peso_porc, '
Anterior
SUM(PESO * 100 / (SELECT SUM(PESO) FROM itensordservpht))
Quanto a puxar o relatório após o código, estou recebendo esta mensagem de erro
Exception class EDatabaseError with message 'Operation not allowed on a unidirectional dataset'.
Aproveitando sei que foge um pouco do assunto, mas qual o tipo de campo indicado para
“peso e valor financeiro” uso FLOAT porém no seu exemplo observei que você usou DOUBLE.
Abraço
Valdecir Peres
22/10/2012
Abraços