Consulta de datas (Aniversariantes da semana)
08/03/2006
0
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
Posts
08/03/2006
Motta
http://forum.devmedia.com.br/viewtopic.php?t=59365&start=0&sid=ff4325b5c70a5f7e442f5478e0bcbef9
08/03/2006
Mahdak
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;
09/03/2006
Mahdak
-------------------------------
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!
09/03/2006
Motta
Testou entre datas com 2 meses , por exemplo :
26/02/2006 até 04/03/2006
___________________
29/12/2015
Kesley Boletti
30/12/2015
Raimundo Pereira
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;
Clique aqui para fazer login e interagir na Comunidade :)