Fórum Somar Dados #355918

25/03/2008

0

Olá pessoal eu tenho a seguintte SQL abaixo e esta funcionando quase q perfeita meu unico problema é tenho q mostrar no meu relatorio o Primeiro e o ultimo registro de uma Tabela isso por determiando periodo dessa forma ele ja me mostra mas tem um pequeno problema...

exemplo: se eu tenho uma tabela e nela tenho 20 registro se o primeiro registro 02 e o ultimo 0050 ela esta mo mostrando assim:

MINIMO = 02 E MAXIMO = 02 isso se for do mesmo cadastro ja se pegar de outros cadastros ele funciona corretamente...

sqlMaster :=           ´ SELECT TIPO_EXT,CAP_CARGA,MAN_NIVEL,COUNT( * ) AS QTDE, MAX(SELO) AS MAXIMO, (SELECT MIN(SELO) FROM EXTINTORES_ITENS ) AS MINIMO´;
   sqlMaster := sqlMaster+´ FROM EXTINTORES_ITENS ´;
   sqlMaster := sqlMaster+´ WHERE ´;
   sqlMaster := sqlMaster+´ (DATA >= :Data1 AND DATA <= :Data2) ´;
   sqlMaster := sqlMaster+´ GROUP BY TIPO_EXT,CAP_CARGA,MAN_NIVEL ´;

   DB_Extintor_Itens.Close;
   DB_Extintor_Itens.SQL.clear;
   DB_Extintor_Itens.SQL.Add( sqlMaster );
   DB_Extintor_Itens.ParamByName(´Data1´).AsDateTime :=DataIni;
   DB_Extintor_Itens.ParamByName(´Data2´).AsDateTime :=DataFim;
   DB_Extintor_Itens.Open;



Tchucky

Tchucky

Responder

Posts

25/03/2008

Wanderok

sqlMaster := ´ SELECT TIPO_EXT,CAP_CARGA,MAN_NIVEL,COUNT( * ) AS QTDE, MAX(SELO) AS MAXIMO, MIN(SELO) FROM AS MINIMO´;
sqlMaster := sqlMaster+´ FROM EXTINTORES_ITENS ´;
sqlMaster := sqlMaster+´ WHERE ´;
sqlMaster := sqlMaster+´ (DATA >= :Data1 AND DATA <= :Data2) ´;
sqlMaster := sqlMaster+´ GROUP BY TIPO_EXT,CAP_CARGA,MAN_NIVEL ´;

NAO PRECISA DO SELECT INTERNO....


Responder

Gostei + 0

25/03/2008

Tchucky

eai wanderok rapas isso ta m tomando um tempo danado...

bom tentei aqui da forma q vc m falou

mas se eu tirar o SELECT e fazer da forma q vc m falou o sistema naum gera o relatorio naum abre nada...


Responder

Gostei + 0

26/03/2008

Wanderok

Na verdade houve um equívoco de interpretaçao, comforme verificamos hoje eu e o amigo.

os valores MAX e MIN nao eram referentes ao grupo selecionado. Nao faziam parte da quebra.

mas sim, valores totais, independentes de grupos.

logo, abrimos em 3 selects....

1) detalhe:

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

2) cabecalho:

a) minimo
// recuperar o primeiro selo do periodo....
DB_FaixaDeSelos.Close;
DB_FaixaDeSelos.sql.clear;
DB_FaixaDeSelos.sql.add(´SELECT MIN(SELO) AS MINIMO ´);
DB_FaixaDeSelos.sql.add(´ FROM EXTINTORES_ITENS ´);
DB_FaixaDeSelos.sql.add(´ WHERE CODIGO = (SELECT MIN(CODIGO) FROM EXTINTOR) ´);
DB_FaixaDeSelos.sql.add(´ WHERE DATA >= :Data1 AND DATA <= :Data2) ´);
DB_FaixaDeSelos.ParamByName(´Data1´).AsDateTime :=DataIni;
DB_FaixaDeSelos.ParamByName(´Data2´).AsDateTime :=DataFim;
DB_FaixaDeSelos.Open;
QRLabel9.caption := DB_FaixaDeSelos.FieldByName(´MINIMO´).AsString;

b) maximo
// recuperar o último selo do periodo....
DB_FaixaDeSelos.Close;
DB_FaixaDeSelos.sql.clear;
DB_FaixaDeSelos.sql.add(´SELECT MAX(SELO) AS MAXIMO ´);
DB_FaixaDeSelos.sql.add(´ FROM EXTINTORES_ITENS ´);
DB_FaixaDeSelos.sql.add(´ WHERE CODIGO = (SELECT MAX(CODIGO) FROM EXTINTOR ) ´);
DB_FaixaDeSelos.sql.add(´ WHERE DATA >= :Data1 AND DATA <= :Data2) ´);
DB_FaixaDeSelos.ParamByName(´Data1´).AsDateTime :=DataIni;
DB_FaixaDeSelos.ParamByName(´Data2´).AsDateTime :=DataFim;
DB_FaixaDeSelos.Open;
QRLabel12.caption := DB_FaixaDeSelos.FieldByName(´MAXIMO´).AsString;
DB_FaixaDeSelos.Close;


:D:D:D


Responder

Gostei + 0

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

Aceitar