GARANTIR DESCONTO

Fórum Somar dados #355725

21/03/2008

0

Pessoal to com um problema q ta m deixando com dor de cabeça...

É 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

Tchucky

Responder

Posts

21/03/2008

Tchucky

Pessoal to com um problema q ta m deixando com dor de cabeça...

É 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


Responder

Gostei + 0

21/03/2008

Wanderok

Eu faria o seguinte....

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


Responder

Gostei + 0

21/03/2008

Webjoel

Olá!

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!


Responder

Gostei + 0

21/03/2008

Wanderok

Seria tão bom se a gente pudesse editar nossos próprios posts... :D:D:D


Responder

Gostei + 0

21/03/2008

Webjoel

hehehe..

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


Responder

Gostei + 0

21/03/2008

Tchucky

wanderok axei muito legel oq vc descreveu mas num entedi quase nada :S

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


Responder

Gostei + 0

21/03/2008

Wanderok

Pessoal,

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


Responder

Gostei + 0

21/03/2008

Wanderok

errata : O nome do amigo é LAELSON.... :D:D:D


Responder

Gostei + 0

22/03/2008

Wanderok

Pessoal, eis a solucao do problema, resolvido hoje !!!!

SELECT TIPO_EXT,CAP_CARGA,MAN_NIVEL,COUNT( * ) AS QTDE
FROM EXTINTORES_ITENS
GROUP BY TIPO_EXT,CAP_CARGA,MAN_NIVEL

Abraço.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar