Consulta de datas (Aniversariantes da semana)

08/03/2006

0

Olá pessoal. estou com um problema aqui. Gostaria de faszer uma consulta na minha tabela
da seguinte maneira:


consulta:
-----------------------------------------------------------------------

´selecione todos os Eleitores que fazem aniversário na semana atual´

-----------------------------------------------------------------------


- Para selecionar Todos os aniversariantes do dia eu fiz o seguinte:
DM.Tbl_Eleitores.Close;
DM.Tbl_Eleitores.SelectSQL.Clear;
DM.Tbl_Eleitores.SelectSQL.Add(´SELECT * FROM ELEITORES WHERE NASCIMENTO = :hoje ´);
DM.Tbl_Eleitores.Params[0].AsString;
DM.Tbl_Eleitores.ParamByName(´hoje´).AsDateTime:= Date;
DM.Tbl_Eleitores.Open;


- Porém a consulta de aniversariantes da semana nao tenho idéia de como fazer


Delphi: 7
Banco : Firebird 1.5


para isso eu teria que filtrar caracteres ou fazer algum calculo?
Se alguem tiver um exemplo ai pra eu me guiar, por favor, postem aqui.

Abraços!


Mahdak

Mahdak

Responder

Posts

08/03/2006

Motta

Veja se isto ajuda :

http://forum.devmedia.com.br/viewtopic.php?t=59365&start=0&sid=ff4325b5c70a5f7e442f5478e0bcbef9


Responder

08/03/2006

Mahdak

ok, vou dar uma olhada e ja dou retorno... po enquanto queria concertar o que disse logo acima em relação aos aniversariantes do dia...

var 
StrDia,StrMes :string;
Ano, Mes, Dia : word;
begin
    DecodeDate(Now, Ano, Mes,Dia);
    StrDia := IntToStr(Dia);
    StrMes := IntToStr(Mes);
    DM.Tbl_Eleitores.Close;
    DM.Tbl_Eleitores.SelectSQL.Clear;
    DM.Tbl_Eleitores.SelectSQL.Add(´SELECT * FROM ELEITORES WHERE Extract(Day From NASCIMENTO) = ´+ StrDia + ´ AND Extract(Month From Nascimento)= ´+StrMes);
    DM.Tbl_Eleitores.Open;

    end;



Responder

09/03/2006

Mahdak

Pessoal, questão resolvida
-------------------------------

Aniversáriantes entre duas datas:
---------------------------------------

{ filtro para pegar apenas o dia do Mask Edit}  
function RetornaDia(Valor: string): string;
var
  PosicaoPonto: integer;
begin
  PosicaoPonto := Length(Valor);

  while (Valor[PosicaoPonto] <> ´/´) and (PosicaoPonto >= 1) do
    dec(PosicaoPonto);

  result := Copy(Valor, PosicaoPonto - 2, Length(Valor) - PosicaoPonto);
end;

{ filtro para pegar apenas o Mes do Mask Edit}
function RetornaMes(Valor: string): string;
var
  PosicaoPonto: integer;
begin
  PosicaoPonto := Length(Valor);

  while (Valor[PosicaoPonto] <> ´/´) and (PosicaoPonto >= 1) do
    dec(PosicaoPonto);

  result := Copy(Valor, PosicaoPonto + 1, Length(Valor) + PosicaoPonto);
end;


procedure TED.Btn_OKClick(Sender: TObject);
var
StrDia1,StrMes1,StrDia2,StrMes2 :string;

begin
    // Data1 e Data2 sao MaskEdits com as mascaras:   !99/99;1;_
    StrDia1 := RetornaDia(Data1.Text);
    StrMes1 := RetornaMes(Data1.Text);
    StrDia2 := RetornaDia(Data2.Text);
    StrMes2 := RetornaMes(Data2.Text);

    DM.Tbl_Eleitores.Close;
    DM.Tbl_Eleitores.SelectSQL.Clear;
    DM.Tbl_Eleitores.SelectSQL.Add(´SELECT * FROM ELEITORES WHERE Extract(Day From NASCIMENTO) BETWEEN ´+ StrDia1 + ´ AND ´ + StrDia2 + ´ AND Extract(Month From Nascimento) BETWEEN ´+ StrMes1 + ´ AND ´ + StrMes2);
    DM.Tbl_Eleitores.Open;

    RelatEleitores.Label_Eleitores.Caption := ´Relatório de Aniversariantes entre o período de: ´+ Data1.Text + ´à ´ + Data2.Text ;
    RelatEleitores.QuickRep1.Preview;
    

end;




Espero ter ajudado, aqui funcionou certinho...

Abraço a todos!


Responder

09/03/2006

Motta

Tem certeza ?

Testou entre datas com 2 meses , por exemplo :

26/02/2006 até 04/03/2006

___________________


Responder

29/12/2015

Kesley Boletti

Boa essa. e como seria o sql para essa situação entre datas com 2 meses , por exemplo : 26/02/2006 até 04/03/2006
Responder

30/12/2015

Raimundo Pereira

Bom dia,

VAR
CONV_DE:STRING;
CONV_ATE:STRING;
SCRIPT_SELECT:STRING;

COLOQUE DOIS DATEPICKER COM OS NOMES
DE_DATA
ATE_DATA


NO BUTTON DE PESQUISA FAÇA O SEGUINTE

CONV_DE:='';
CONV_ATE:='';
SCRIPT_SELECT:='';



CONV_DE:=DateToStr(DE_DATA.Date); //AQUI VAI PEGAR A DATA INFORMADA NO DATE PICKER (DE_DATA) E PREENCHER EM STRING.
CONV_ATE:=DateToStr(ATE_DATA.Date);//AQUI VAI PEGAR A DATA INFORMADA NO DATE PICKER (ATE_DATA) E PREENCHER EM STRING.


CONV_DE:=StringReplace(CONV_DE,'/','.', [rfReplaceAll, rfIgnoreCase]); // AQUI SUBSTITUÍMOS A '/' POR '.'
CONV_ATE:=StringReplace(CONV_ATE,'/','.', [rfReplaceAll, rfIgnoreCase]); // AQUI SUBSTITUÍMOS A '/' POR '.'



SCRIPT_SELECT:='SELECT * FROM ELEITORES WHERE NASCIMENTO BETWEEN '''
+CONV_DE+''' AND '''
+CONV_ATE+''''+

DM.Tbl_Eleitores.Close;

DM.Tbl_Eleitores.SelectSQL.Clear;

DM.Tbl_Eleitores.SelectSQL.TEXT:='SCRIPT_SELECT';

DM.Tbl_Eleitores.Open;
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar