[RESOLVIDO] Relatório Agrupado com Ireport

19 respostas
D

Gostaria de imprimir um relatório agrupado com ireport exemplo:

Dados:

Descrição //Quant// Total

Produto1 //1// 65,60
Produto1 //1// 70,00
Produto2 //1// 50,00
Produto2 //1// 40,00

Gostaria que minha saida fosse assim:

Produto1 //2// 135,60
Produto2 //2// 90,00

Fico no aguardo de alguém ai … VLW

19 Respostas

L

Não seria somente vc fazer um select totalizando os campos que deseja ?

SELECT SUM(quant)
FROM tables
WHERE id = {id};
D

Obrigado lucas, deu certo cara … faltou conhecimento sql mesmo … Agora só mais uma duvida, meu campos tem valores do tipo 65,6 nas quantidades, no meu relatório está saindo apenas 65.0, sabe porque??? O tipo da variável na relatório está como duble …

VLW

L

Posta o esquema da sua tabela e a query que está usando !

D

Vamos lá,

TABELA

Revendedor//Quantidade//M2//MES/ANO

Revendedor1// 1 // 70,10 // Janeiro // 2013
Revendedor1// 1 // 80,00 // Janeiro // 2013

Revendedor2// 1 // 100,00 // Janeiro // 2013
Revendedor2// 1 // 70,00 // Janeiro // 2013

Revendedor3// 1 // 50,00 // Fevereiro // 2013
Revendedor3// 1 // 30,65 // Favereiro // 2013

Revendedor4// 1 // 80,00 // Março // 2013
Revendedor5// 1 // 20,00 // Março // 2013

Minha query
SELECT
     *,
     SUM(`quantidade`) AS fechamento_quantidade,
     SUM(`m2`) AS fechamento_m2
     
FROM
     `fechamento` fehamento

GROUP BY
    revendedor
Com essa query consigo saber o total da quantidade e M2 por revendedor. Perfetio. Poré, além daquele problema q lhe falei que não imprimi 65,10 e sim apenas 65.00 estou tentando fazer um filtro por mes, para saber o total da quantidade e M2 por mes, mais se coloco um
WHERE `mes` = "Janeiro"
antes do
GROUP BY
    revendedor
minha consulta não devolve as somas, acredito que ela não está conseguindo agrupar os resultados de mes, pois para cada registro no banco o mesmo valor "Janeiro se repete".

Gostaria de ajuda nisso também, preciso fazer com que a consulta além de fazer o que já faz perfeito que é somar quantidade e m2 por revendedor ele faça o resumo por mes também ...

VLW LUCAS ... ABRAÇO

D

Lucas, já consegui cara … Simplesmente utilizei um parâmetro para que recebesse o valor de uma JcomboBox com o mês requerido, isso fez com que o sql entendesse que o seria uma consulta onde somasse a quantidade e o M2 por Revendedor referente ao mês selecionado. Quando colocava o valor do mês direto na query ele não somava, mais por parâmetro ele soma belezinha, mais ainda estou com aquele problema da impressão ok. Se puder me ajude …

ABRAÇO.

L

Maravilha…
que bom que conseguiu.

Coloca um [Resolvido] no tópico do assunto.

Abraços.

D

lucas_duzo:
Maravilha…
que bom que conseguiu.

Coloca um [Resolvido] no tópico do assunto.

Abraços.

Então lucas, ainda não consegui resolver aquele problema de impressão, tipo alguns resultados da minha tabela me trazem valores do tipo 65,60 porém o relatório está sendo impresso com valore assim 65,00 apenas … Se souber como me ajudar, fico no aguardo.

L

Bom, você pode tentar converter esse valor de double para String, aí vc teria que alterar sua variável no relatório tbm para String.

Você pode fazer isso de duas formas:

1 - Converter o campo já na execução da query.

2 - Receber o valor em uma variável double, converte - lá para String e passa - lá como parâmetro ao seu relatório.

Qualquer coisa posta ai.

D

lucas_duzo:
Bom, você pode tentar converter esse valor de double para String, aí vc teria que alterar sua variável no relatório tbm para String.

Você pode fazer isso de duas formas:

1 - Converter o campo já na execução da query.

2 - Receber o valor em uma variável double, converte - lá para String e passa - lá como parâmetro ao seu relatório.

Qualquer coisa posta ai.

Vc pode detalhar um pouco mais como seria a opção 1?

L
SELECT  
     *,  
     SUM(`quantidade`) AS fechamento_quantidade,  
     SUM(`m2`) AS fechamento_m2,
     // aqui a conversão para String
     CAST(quantidade AS varchar(12)) as quantidadeString
       
FROM  
     `fechamento` fehamento  
  
GROUP BY  
    revendedor

Ae você passaria o retorno quantidadeString para seu relatório.

D
lucas_duzo:
SELECT  
     *,  
     SUM(`quantidade`) AS fechamento_quantidade,  
     SUM(`m2`) AS fechamento_m2,
     // aqui a conversão para String
     CAST(quantidade AS varchar(12)) as quantidadeString
       
FROM  
     `fechamento` fehamento  
  
GROUP BY  
    revendedor

Ae você passaria o retorno quantidadeString para seu relatório.

Esse codigo
CAST(quantidade AS varchar(12)) as quantidadeString
não ta funcionando, na própria query já da erro...
L

que banco você usa ?

D

MySQL

L

Tenta assim então:

SELECT  
     *,  
     CAST(SUM(`quantidade`) AS varchar(15)) AS fechamento_quantidade,  
     SUM(`m2`) AS fechamento_m2  
       
FROM  
     `fechamento` fehamento  
  
GROUP BY  
    revendedor
D
lucas_duzo:
Tenta assim então:
SELECT  
     *,  
     CAST(SUM(`quantidade`) AS varchar(15)) AS fechamento_quantidade,  
     SUM(`m2`) AS fechamento_m2  
       
FROM  
     `fechamento` fehamento  
  
GROUP BY  
    revendedor

Mesmo erro ....

Eu fiz alguns teste aqui e percebi uma coisa: a tabela que recebe minha m2 no banco Mysql é do tipo varchar(10) ela recebe tanto valores ex 20.6 como 20,6 porém para que o ireport faça o sum e tipo 80 + 20,60 ele mostra 100,00 se eu gravar os dados na minha aplicação assim 80 + 20.60 o ireport mostra certo 100,60 .... Como resolver isso hem, para que aceito valores com virgula e não ponto .... acredito que o mistério esteja nisso.

L

Você deve tratar como os dados devem ser salvos em seu banco de dados, ou seja, crie um método que trate esses números com (,) substituindo os mesmos por (.)

Obs: Cuidado com valores que contém casa de milhares (1.000,06), neste caso seu método deve substituir primeiramente o (.) por vazio e depois a (,) por ponto (.)

Dessa forma, sua aplicação salvará os dados corretamente no banco e você não terá problemas com seu relatório.

L

Outra coisa, esse seu campo m2 sempre receberá valores numéricos ?

Se sim, pq não altera ele de varchar para algum numérico, você não terá problemas em efetuar uma soma.

D

lucas_duzo:
Você deve tratar como os dados devem ser salvos em seu banco de dados, ou seja, crie um método que trate esses números com (,) substituindo os mesmos por (.)

Obs: Cuidado com valores que contém casa de milhares (1.000,06), neste caso seu método deve substituir primeiramente o (.) por vazio e depois a (,) por ponto (.)

Dessa forma, sua aplicação salvará os dados corretamente no banco e você não terá problemas com seu relatório.

É isso mesmo, ja tinha pensado nisso mais gostaria de fazer de outra forma, mais vou fazer assim mesmo … VLW pela ajuda ai hem Lucas, sucesso.

D

Vou encerrar o tópico.

Criado 12 de abril de 2013
Ultima resposta 15 de abr. de 2013
Respostas 19
Participantes 2