Limas 0 Denunciar post Postado Junho 18, 2009 Ola pessoal, Preciso que vocês me ajudem com este problema. Eu tenho duas tabelas e montei um relatório no QuickReport utilizando duas Querys e não estou conseguindo mostrar o cálculo total das duas Querys, estou utilizando um subdetaisl para cada Query. Preciso mostrar no relatório a peças utilizadas no Ordem de Serviço com o total das peças e abaixo a lista de mão de obra também com o total desta lista, até aqui eu consegui, agora eu preciso ter o resultado da soma dos dois subdetais e isto eu estou tentando a dias e não consigo. Exemplo: PEÇAS. Descrição Codigo Quant. Preço Total Biela 1215 4 25,00 100,00 Pistão 1718 4 32,00 128,00 Total....................................... 228,00 SERVIÇOS. Descrição Codigo Quant. Preço Total Retifica 122 1 120,00 120,00 Regulagem 432 1 80,00 80,00 Total.......................................... 200,00 TOTAIS TOTAL DE PEÇAS............... 228,00 TOTAL DE SERVIÇOS......... 200,00 TOTAL GERAL.................... 428,00 Desde Já eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Avatar 0 Denunciar post Postado Junho 18, 2009 Ola pessoal, Preciso que vocês me ajudem com este problema. Eu tenho duas tabelas e montei um relatório no QuickReport utilizando duas Querys e não estou conseguindo mostrar o cálculo total das duas Querys, estou utilizando um subdetaisl para cada Query. Preciso mostrar no relatório a peças utilizadas no Ordem de Serviço com o total das peças e abaixo a lista de mão de obra também com o total desta lista, até aqui eu consegui, agora eu preciso ter o resultado da soma dos dois subdetais e isto eu estou tentando a dias e não consigo. Exemplo: PEÇAS. Descrição Codigo Quant. Preço Total Biela 1215 4 25,00 100,00 Pistão 1718 4 32,00 128,00 Total....................................... 228,00 SERVIÇOS. Descrição Codigo Quant. Preço Total Retifica 122 1 120,00 120,00 Regulagem 432 1 80,00 80,00 Total.......................................... 200,00 TOTAIS TOTAL DE PEÇAS............... 228,00 TOTAL DE SERVIÇOS......... 200,00 TOTAL GERAL.................... 428,00 Desde Já eu agradeço. Deixa eu ver se entendi, você tem um relatório que deve exibir produtos, com as colunas código, qtd, preço e total. Ao final de cada "grupo" (serviços/peças) - você deve trazer o total. E no final trazer um total geral de peças, de serviços e geral. Olha, eu faria da seguinte maneira: 1. Criaria uma banda de QRGroup (grupo) para o tipo (Peças/Serviços). 2. Criaria uma banda de QRFooter (rodapé) para o tipo acima e vincularia os dois. 3. Montaria um SQL usando Union all, juntando dois selects, um selecionando todas as peças e outro selecionando todos os serviços. (caso não esteja familiarizado, já aviso que ambos os selects tem que ter o mesmo número de campos. O nome dos campos deve ser o mesmo, se não for, tu pode user um as <nome> - ex.: Select idPeca as CodProduto ... Union all Select idServico as CodProduto ... ) 4. No select acima, tomaria o cuidado para colocar uma coluna com o nome Tipo, que possuirá S para serviço e P para peça. (Select 'P' as Tipo ... Union All Select 'S' as Tipo ...) 5. Criaria dois campos calculados, um para o valor de Serviço e outro para o valor de Peça. 6. Usaria a função SUM() do QRExpression para fazer o serviço de somar... Por alto, isto vai resolver teu problema. Se tiver dúvidas técnicas, pergunte. Compartilhar este post Link para o post Compartilhar em outros sites
Avatar 0 Denunciar post Postado Junho 18, 2009 Ah! Me esqueci de comentar, também colocaria a banda de totais (Summary) para exibir os totais de peças, serviços e geral... Compartilhar este post Link para o post Compartilhar em outros sites
Avatar 0 Denunciar post Postado Junho 22, 2009 Ola Gente boa, Primeiro quero te agradecer pela atenção. Mas ainda continuo com o problema. Eu entendi o raciocinio da orientação que você me deu a respeito de Totais no QuickReport, mas não estou conseguindo montar a Query, do maneira que eu fiz ela dá o seguinte erro Tipe mismatch expression. Meu relatório é uma Ordem de Serviço que primeiro ele deve mostrar o nome, endereço, telefone, etc e depois ele deve mostrar as peças e serviços com os totais como eu já mostrei. Qual seria a ordem das bandas no Quick e como corrigir esta query, eu posso utilizar uma ou treis tabelas, qual a melhor maneira? Minha Query está assim. 1ª Query Select codigo, cliente, chassi, codcli, cgc, cpf, rg, fone, contato, modveiculo, endereco, bairro, cidade, estado, adicionais, observações, atendimento, situacao, data, horaentrada, dataentrega, horaentrega, km, comb, seqordem, codigo, codserv, serviço, valorserv, quantidade, unidade, totalserv From Tabservicosman 2ª Query ligada à 1ª pelo DataSource Select codigo, codserv, serviço, valorserv, quantidade, unidade, totalserv, seqordem From Tabservicosmaoobra Where (Tabservicosmaoobra.seqordem =:S) UNION ALL Select codigo, codpeca as codserv, peca as serviço, valorpeca as valorserv, quantpeca as quantidade, unidpeca as unidade, totpeca as totalserv, seqordem From Tabservicospecas Where (Tabservicospecas.seqordem =:P) Demorei para responder, mas eu estava totalmente sem internet neste final de semana. É por ae a idéia. Só observando que não podem haver caracteres especiais no teu sql :) Mas eu acho que tu consegue fazer o teu SQL com apenas 2 tabelas. Uma delas irá conter o sql principal, isto é, o 2ºsql que tu colocou ali. Por acaso é neste que tá dando problema? Parece que a única coisa errada que existe é o cedilha (ç). Mas pra afirmar isto, eu teria que ver o modelo ER das tabelas. O lance de mostrar os dados do cliente, tu pode fazer através de campos calculados (o componente de Query tem este poderoso conceito). Clicando duas vezes sobre a query, tu clica o segundo botão e vai em New Field. Clica na opção Calculated. Informe o nome, tipo e tudo o mais. No evento OnCalcFields do componente query, faça a leitura dos dados e a atribuição (os campos calculados estarão "editáveis" dentro deste evento - permitindo tu customizar os valores). Note que campos calculados não te permitem ordenação - então só use para informações extras. Para trazer os dados que tu precisa, utilize uma outra tabela "genérica". Eu só alteraria o seguinte no teu sql: Select codigo, codserv, serviço, valorserv, quantidade, unidade, totalserv, seqordem, 'S' as TIPO From Tabservicosmaoobra Where (Tabservicosmaoobra.seqordem =:S) UNION ALL Select codigo, codpeca as codserv, peca as serviço, valorpeca as valorserv, quantpeca as quantidade, unidpeca as unidade, totpeca as totalserv, seqordem, 'P' as TIPO From Tabservicospecas Where (Tabservicospecas.seqordem =:P) Order by 9 (nota: você só pode ter um order by em quando houver union all - e outra, eu estou ordenando pelo nono (9º) campo que ele encontrar no sql, isto é, o TIPO - é importante para mais tarde) Um dos campos calculados que eu criaria é o valor Serviço. E o outro Valor peça. No evento de cálculo dos campos, eu faria uma avaliação do conteúdo do campo TIPO. Se ele for S, eu colocaria o valor (TOTALSERV) no campo de valorServico. Se fosse P, o valor de TOTALSERV iria para o campo valorPeca. Quanto a ordem das bandas, eu recomendo tu criar o seguinte... Group Header (componente) (no expression deste, coloque o tipo do item, isto é, se ele é Serviço ou Peça - o próprio QR vai organizar) TQrBand (tipo rbGroupFooter) (vincule com o Group Header) Nos totalizadores, use SUM(valorPeca) ou SUM(valorServico) - conforme necessário. Qualquer coisa me pergunta. O bom é usar o fórum, pois as tuas dúvidas podem ajudar outras pessoas... Compartilhar este post Link para o post Compartilhar em outros sites
Limas 0 Denunciar post Postado Junho 29, 2009 Ola Avatar, Ótima explicação, além de conseguir resolver (terminar o relatório) meu problema, ampliou muito o meu conhecimento a nível de relatórios no QuickReport. Quero mais uma vêz agradecer pela sua atenção e de todo o pessoal do Forum Imasters. Um abraço. Valdir Lima Compartilhar este post Link para o post Compartilhar em outros sites