Consulta de datas (Aniversariantes da semana)

08/03/2006

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&93;.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

Respostas

08/03/2006

Motta

Veja se isto ajuda :

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


Responder Citar

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 Citar

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&93; <> ´/´) 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&91;PosicaoPonto&93; <> ´/´) 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 Citar

09/03/2006

Motta

Tem certeza ?

Testou entre datas com 2 meses , por exemplo :

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

___________________


Responder Citar

29/12/2015

Kesleyboletti Currículo

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 Citar

30/12/2015

P2

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 Citar