Consulta de datas (Aniversariantes da semana)

Delphi

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].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

Curtidas 0

Respostas

Motta

Motta

08/03/2006

Veja se isto ajuda :

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


GOSTEI 0
Mahdak

Mahdak

08/03/2006

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;



GOSTEI 0
Mahdak

Mahdak

08/03/2006

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!


GOSTEI 0
Motta

Motta

08/03/2006

Tem certeza ?

Testou entre datas com 2 meses , por exemplo :

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

___________________


GOSTEI 0
Kesley Boletti

Kesley Boletti

08/03/2006

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
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

08/03/2006

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;
GOSTEI 0
POSTAR