GARANTIR DESCONTO

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:

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

Tchucky

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 ;)


Responder

Gostei + 0

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

Aceitar