Fórum Somar dados #355725
21/03/2008
0
É o seguinte tenho duas tabelas uma chama:
Extintor e outra chamada Extintores_itens
agora na minha tabela Extintores_itens tenho os campos:
TIPO = que vai receber os tipos de extintores se ele é de agua, CO2, pó...
Capacidade = 1 KG, 4 KG, 6 KG, 10 KG
e Manutenção = que pode receber de 1, 2, ou 3 q se refere a tipo de manutenção diferente... ( 1 = Inspeção, 2 = recarga, 3 = Teste)
agora q vem oq esta m deixando careca....
tenho q mostrar em um relatorio quantos extitintor de agua, CO2, pó recebeu manutenção em um determinado periodo de datas...
Exemplo;
no mes 03 teve as as seguintes informções:
Extintor de Pó Inspeção Recarga teste
1 KG 20 50 3
4 KG 10 40 10
seria dessa forma... q ficaria
no caso eu estou usando o componente ZEOS
Tchucky
Curtir tópico
+ 0Posts
21/03/2008
Tchucky
É o seguinte tenho duas tabelas uma chama:
Extintor e outra chamada Extintores_itens
agora na minha tabela Extintores_itens tenho os campos:
TIPO = que vai receber os tipos de extintores se ele é de agua, CO2, pó...
Capacidade = 1 KG, 4 KG, 6 KG, 10 KG
e Manutenção = que pode receber de 1, 2, ou 3 q se refere a tipo de manutenção diferente... ( 1 = Inspeção, 2 = recarga, 3 = Teste)
agora q vem oq esta m deixando careca....
tenho q mostrar em um relatorio quantos extitintor de agua, CO2, pó recebeu manutenção em um determinado periodo de datas...
Exemplo;
no periodo de 03/03/2008 a 30/03/2008 teve as as seguintes informções:
Código:
Extintor de Pó Inspeção Recarga teste 1 KG 20 50 3 4 KG 10 40 10 6 KG 05 20 05 10 KG 30 12 20 seria dessa forma... q ficaria
no caso eu estou usando o componente ZEOS
Gostei + 0
21/03/2008
Wanderok
1) Criaria uma tabela temporária apenas para o relatório,
já no formato desejado, ou seja:
RELATORIO_REL
REL_TIPOEXTINTOR,
REL_INSPECAO,
REL_RECARGA,
REL_TESTE
2) ao chamar o relatório já com os devidos filtros de datas, cliente, etc...
QUERY1.SQL.ADD(´
SELECT CODIGOEXTINTOR,MANUTENCAO,COUNT(*) AS QTDE FROM EXTINTORES,EXTINTORES_ITENS
WHERE ......... (SE ME PASSAR AS ESTRUTURAS, MONTO PRA VOCE)
GROUP BY TIPOEXTINTOR, MANUTENCAO
´);
isto me da a quantidade total de manutencao (por tipo) para cada tipo de extintor
3) agora eu preencheria a tabela de relatorios...
WHILE NOT QUERY1.EOF DO
BEGIN
// VER SE JA EXISTE REGISTRO PARA ESTE TIPO DE EXTINTOR...
QUERY2.CLOSE;
QUERY2.SQL.CLEAR;
QUERY2.SQL.ADD(´SELECT REL_TIPOEXTINTOR´);
QUERY2.SQL.ADD(´ FROM RELATORIO_REL ´);
QUERY2.SQL.ADD(´ WHERE REL_TIPOEXTINTOR = :REL_TIPOEXTINTOR ´);
QUERY2.PARAMBYNAME(´REL_TIPOEXTINTOR´).ASSTRING :=
QUERY1.FIELDBYNAME(´TIPOEXTINTOR´).ASSTTRING;
QUERY2.OPEN;
QUERY2.CLOSE;
QUERY2.SQL.CLEAR;
IF QUERY2.EOF THEN
BEGIN
// INSERIR....
QUERY2.SQL.ADD(´INSERT INTO RELATORIO_REL´ ´)
QUERY2.SQL.ADD(´ (REL_TIPOEXTINTOR, ´);
QUERY2.SQL.ADD(´ REL_INSPECAO,´);
QUERY2.SQL.ADD(´ REL_RECARGA,´);
QUERY2.SQL.ADD(´ REL_TESTE)´);
QUERY2.SQL.ADD(´VALUES ´);
QUERY2.SQL.ADD(´ (:REL_TIPOEXTINTOR, ´);
QUERY2.SQL.ADD(´ :REL_INSPECAO,´);
QUERY2.SQL.ADD(´ :REL_RECARGA,´);
QUERY2.SQL.ADD(´ :REL_TESTE)´);
END
ELSE
BEGIN
// ALTERAR
QUERY2.SQL.ADD(UPDATE RELATORIO_REL´ ´)
QUERY2.SQL.ADD(´ SET REL_INSPECAO = REL_INSPECAO + :REL_INSPECAO, ´);
QUERY2.SQL.ADD(´ REL_RECARGA = REL_CARGA + :REL_RECARGA,´);
QUERY2.SQL.ADD(´ REL_TESTE = REL_TESTE + :REL_TESTE´);
QUERY2.SQL.ADD(´WHERE REL_TIPOEXTINTOR = :REL_TIPOEXTINTOR ´);
END;
// PARTE COMUM A AMBOS AS QUERIES....
QUERY2.PARAMBYNAME(´REL_TIPOEXTINTOR´).ASSTRING := QUERY1.FIELDBYNAME(´TIPOEXTINTOR´).ASSTTRING;
QUERY2.PARAMBYNAME(´REL_INSPECAO´).ASINTEGER := 0;
QUERY2.PARAMBYNAME(´REL_RECARGA´).ASINTEGER := 0;
QUERY2.PARAMBYNAME(´REL_TESTE´).ASINTEGER := 0;
CASE QUERY1.FIELDBYNAME(´MANUTENCAO´).ASINTEGER OF
1 : QUERY2.PARAMBYNAME(´REL_INSPECAO´).ASINTEGER := QUERY1.FIELDBYNAME(´QTDE´).ASINTEGER;
2 : QUERY2.PARAMBYNAME(´REL_RECARGA´).ASINTEGER := QUERY1.FIELDBYNAME(´QTDE´).ASINTEGER;
3 : QUERY2.PARAMBYNAME(´REL_TESTE´).ASINTEGER := QUERY1.FIELDBYNAME(´QTDE´).ASINTEGER;
END;
END;
AGORA, PARA O RELATORIO,
LER A QUERY1(SELECT * FROM RELATORIO_REL´);
E TERA OS DADOS ABAIXO COMO DESEJADO
Extintor de Pó Inspeção Recarga teste
1 KG 20 50 3
4 KG 10 40 10
6 KG 05 20 05
10 KG 30 12 20
QUALQUER COISA ME FALE QUE EU DETALHO MAIS
ABRACAO :d:d:d
Gostei + 0
21/03/2008
Webjoel
Se o seu problema estiver em como obter os dados (via SQL), vocÇe pode obter esses dados através da cláusula Group By.
Exemplo:
select manutencao, capacidade, tipo, sum(*) from tabela_itens where database between :datainicial and :datafinal group by manutencao, tipo, capacidade
Para maior ajuda mande o metadata de sua tabela!
E da-lhe F9!
Gostei + 0
21/03/2008
Wanderok
Gostei + 0
21/03/2008
Webjoel
Concordo...
Inseri o post, e o amigo wanderok chegou primeiro, e ele foi mais feliz no código, pois me confundi o ´count´ pelo ´sum´.
A dica do amigo wanderok segue mais completa!
E dá-lhe F9! :o
Gostei + 0
21/03/2008
Tchucky
como vou identificar quem é CO2, agua e Pó
se for possivel m add no msn para poder m tirar essa duvida...
msn: laelsonsousa@hotmail.com
obrigado
laelson
Gostei + 0
21/03/2008
Wanderok
Como a dúvida do Leo é muito específica, acho que nao faz mal responder a ele por msn....
Mas se alguem quiser ver a solucao aqui, é só se manifestar....
Abracos...
Wander
Gostei + 0
21/03/2008
Wanderok
Gostei + 0
22/03/2008
Wanderok
SELECT TIPO_EXT,CAP_CARGA,MAN_NIVEL,COUNT( * ) AS QTDE
FROM EXTINTORES_ITENS
GROUP BY TIPO_EXT,CAP_CARGA,MAN_NIVEL
Abraço.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)