Ir para conteúdo
mm_edilson

Aniversários entre duas datas

Recommended Posts

Boa tarde. Preciso que minha query retorne os aniversariantes entre duas datas selecionadas em dois datetimepickers. 

 

Fiz assim:

	//Realiza a consulta 	Adoquery1.Close; 	Adoquery1.SQL.Clear; 	Adoquery1.SQL.Add('Select * from CadPessoas'); 	ADOQuery1.SQL.add('where ((Month(DtNasc) * 100) + Day(DtNasc)) between :DtNascIni and :DtNascFim'); 	AdoQuery1.SQL.add('Order by DtNasc'); 	ADOQuery1.Parameters.ParamByName('DtNascIni').Value := MonthOf(DateTimePicker1.DateTime) * 100 + DayOf(DateTimePicker1.DateTime); 	ADOQuery1.Parameters.ParamByName('DtNascFim').Value := MonthOf(DateTimePicker2.DateTime)*100 + DayOf(DateTimePicker2.DateTime); 	AdoQuery1.Open;
	

 

Só que ele ta confundindo os meses que tem o numero 1. Por exemplo, fiz uma consulta entre 01 de Janeiro e 01 de fevereiro. Ele retornou todos os aniversariantes de outubro, novembro, dezembro e janeiro. Já se a consulta for entre fevereiro e março, por exemplo, que não envolve meses que começam com o numero 1, dá certinho. 

 

Alguém poderia ajudar? Uso Delphi 7 e Access.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa noite amigo, eu faço assim e funciona perfeitamente, porem utilizo  dbxpress, + basta colocar a sql na forma q esta q vai funcionar tb, no caso abaixo eu comparo os dias somente, no caso abaixo seleciono o mes e o periodo  (entre o dia d1 e o dia d2 no mes desejado)

simpledataset1.Active:=False;
simpledataset1.dataset.CommandText := 'SELECT CODIGO,NOME, NASCIMENTO,TELEFONE FROM CLIENTES WHERE EXTRACT(MONTH FROM NASCIMENTO)=:MES AND EXTRACT(DAY FROM NASCIMENTO) BETWEEN :D1 AND :D2 ORDER BY EXTRACT(DAY FROM NASCIMENTO)';
SIMPLEDataSet1.dataset.ParamByName('Mes').AsInteger := StrToInt(Edit1.Text);
SIMPLEDataSet1.dataset.ParamByName('d1').AsInteger := StrToInt(Edit2.Text);
SIMPLEDataSet1.dataset.ParamByName('d2').AsInteger := StrToInt(Edit3.Text);
simpledataset1.Active:=True;
 

espero que te ajude de alguma forma

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por felk_fel@hotmail.com
      Boa tarde a todos!

      De vez em quando, acontece isso comigo, o Delphi compila a aplicação mas ela não roda ou fecha sozinha...Para resolver eu estou sempre tendo que fechar o delphi e criar uma nova aplicação. Alguém poderia me ajudar conforme o vídeo abaixo?

      https://www.youtube.com/watch?v=cFBJSS5yTN8

      Agradeço pela atenção.
    • Por Felipe Garciax
      Ola,
       
      Estou com o seguinte problema, no formulario principal do meu projeto tenho um SplitView e um Image em AlClient com uma imagem em 193 kb, ao abrir e fechar o SplitView em execucao a imagem PISCA, ja usei no OBJECT INSPECTOR o DoubleBuffered em TRUE tanto para o form quanto para o SplitView e o problema persiste, ja fiz o teste no codigo tanto para o EVENTO OnShow e OnCreat:
      DoubleBuffered :=True;  e nenhum resultado... Help Me
    • Por ericborrero
      Boa Noite a todos ....
       
      aguem pode me ajudar com esse código.... preciso que ele procure o menor valor e não o maior como esta aqui
       
       
       
      Procedure TfrmAvaliacao.PiorTempo;
      var
        ArrayString: Array [1 .. 5] of string;
        PiorTempo: string;
        i: Integer;
      begin
        ArrayString[1] := dbtext2.Caption;
        ArrayString[2] := dbtext4.Caption;
        ArrayString[3] := dbtext6.Caption;
        ArrayString[4] := dbtext8.Caption;
        ArrayString[5] := dbtext10.Caption;
        PiorTempo := EmptyStr;
          for i := low(ArrayString) to high(ArrayString) - 1 do
          if PiorTempo < ArrayString then
            PiorTempo := ArrayString;

        Label210.Caption := PiorTempo;
       
      end;
       
    • Por Remeling
      Ola pessoal,
      Estou fazendo um sistema web em Delphi xe8 Intraweb, coloco os objetos no form e quando vou compilar o sistema, aparece somente a pagina em branco, o que estou fazendo errado.
    • Por Marcelo_Ribeiro
      E aí pessoal, tudo bem? 
      Quero montar um sistema que irá acessar um banco de dados Firebird em outra máquina. 
      Consegui fazer a conexão via socket. Criei um remote data module, criei um server, e pelo socket server, consegui fazer a conexão. 
      Mas tem um porém. To usando Firebird. No meu note, tô com o server rodando, e rodei o client tb. Ao mesmo tempo, rodei o client em outro pc. 
      Tenho uma tabela teste que possui 6 registros. Ao abrir o client nos 2 pcs, a consulta traz os 6 registros. No meu note, crio um 7º registro. Mas no outro pc, ao consultar, ele só traz 6 registros. Se eu fechar e abrir de novo, ao consultar traz os 7. 
      Criei o remote data module como Instancing = Multiple instance e Threading Model = Single. Será que isso tem alguma coisa a ver? 
       
      Instalei o Sql Server. Fazendo tudo do mesmo jeito, o Sql server atualiza, mas o firebird não. Será que é limitação?
       
      Valeu pessoal 
      Abs
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.