Fórum Como saber o primeiro e o ultimo regsitro #357233
16/04/2008
0
Olá pessoal tenho um sistema para controle de lojas de extintores que trabalha de acordo com as especificações da ABNT e recebi um relatorio para fazer que esta m dando dor de cabeça a dias.
preciso saber num determinal periodo qual foi o primeiro selo cadastrado e o ultimo selo cadastrado no sistema no periodo de datas...
alem disso tenho outras funções q ja esta funcionando no relatorio mas essa de pegar o primeiro e o ultimo registro no periodo esta m tirando o sono:
A função q tenho é a seguinte:
sendo q tenho q mostrar no meu relatorio dessa forma:
Nº de Selos do Inmetro Utilizados: 1222 A 155555
dessa forma
preciso saber num determinal periodo qual foi o primeiro selo cadastrado e o ultimo selo cadastrado no sistema no periodo de datas...
alem disso tenho outras funções q ja esta funcionando no relatorio mas essa de pegar o primeiro e o ultimo registro no periodo esta m tirando o sono:
A função q tenho é a seguinte:
QrParametro.Caption :=´Periodo de entrega: ´+FrmRelPedidos.MskDataIni.Text+´ - ´+FrmRelPedidos.MskDataFim.Text; DataIni :=StrToDate(FrmRelPedidos.MskDataIni.Text); DataFim :=StrToDate(FrmRelPedidos.MskDataFim.Text); // 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; // 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; sqlMaster := ´ SELECT TIPO_EXT,CAP_CARGA,MAN_NIVEL,COUNT( * ) AS QTDE ´;//, MAX(SELO) AS MAXIMO, MIN(SELO) AS MINIMO´; // 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; // visualizar QuickRep1.Preview;
sendo q tenho q mostrar no meu relatorio dessa forma:
Nº de Selos do Inmetro Utilizados: 1222 A 155555
dessa forma
Tchucky
Curtir tópico
+ 0
Responder
Posts
19/04/2008
Darkrme
amigo... eu usaria assim.. no caso eu uso dbGo (D2007) ou ADO (D7):
DB_FaixaDeSelos.Close;
DB_FaixaDeSelos.sql.clear;
DB_FaixaDeSelos.sql.add(´SELECT SELO ´);
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.sql.add(´ ORDER BY DATA ´);
DB_FaixaDeSelos.ParamByName(´Data1´).AsDateTime :=DataIni;
DB_FaixaDeSelos.ParamByName(´Data2´).AsDateTime :=DataFim;
DB_FaixaDeSelos.Open;
DB_FaixaDeSelos.First;
QRLabel9.caption := DB_FaixaDeSelos.FieldByName(´SELO´).AsString;
DB_FaixaDeSelos.Last;
QRLabel12.caption := DB_FaixaDeSelos.FieldByName(´SELO´).AsString;
olha.. a ideia eh essa.. vc manda sua query pro primeiro registro e pega o valor... depois vc manda a query pro ultimo registro e recupera o valor...
=)
espero ajudar ;)
DB_FaixaDeSelos.Close;
DB_FaixaDeSelos.sql.clear;
DB_FaixaDeSelos.sql.add(´SELECT SELO ´);
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.sql.add(´ ORDER BY DATA ´);
DB_FaixaDeSelos.ParamByName(´Data1´).AsDateTime :=DataIni;
DB_FaixaDeSelos.ParamByName(´Data2´).AsDateTime :=DataFim;
DB_FaixaDeSelos.Open;
DB_FaixaDeSelos.First;
QRLabel9.caption := DB_FaixaDeSelos.FieldByName(´SELO´).AsString;
DB_FaixaDeSelos.Last;
QRLabel12.caption := DB_FaixaDeSelos.FieldByName(´SELO´).AsString;
olha.. a ideia eh essa.. vc manda sua query pro primeiro registro e pega o valor... depois vc manda a query pro ultimo registro e recupera o valor...
=)
espero ajudar ;)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)