Delphi Filtrar intervalos data mês inteiro 01 à 30, banco Access
Bom dia amigos !
Por favor !
Tenho um sistema de cadastro com banco de dados access, neste banco eu tenho um tabela chamada: cpagam, e nesta
tabela um campo chamado: data_pg, gostaria com ajuda dos colegas criar um filtro onde eu consiga filtrar intervalos de
valores:
EX: tenho neste campo data_pg, datas da seguinte forma:
Janeiro
01/01/2020 04:10:40
02/01/2020 07:10:00
03/01/2020 08:10:40
04/01/2018 09:10:40
fevereiro
01/02/2020 11:10:40
02/02/2020 12:10:40
03/02/2020 13:10:40
março
01/03/2020 14:10:40
02/03/2020 15:10:40
03/03/2020 18:10:40
Como exemplo Gostaria de filtra todas a datas de um mês inteiro
EX: FEVEREIRO
01/02/2020 11:10:40
02/02/2020 12:10:40
03/02/2020 13:10:40
OBS.: utilizo
Data Module =========================== DM
ADOConnect = conexão com banco = Access = banco
ADOQuery = para consultas =============== cpagam
===========SQL String============
select*from cpagam where data_pg
order by data_pg
=========botão pesquisar==========
var
Data1,Data2 : string;
begin
If DateTimePicker2.Date < DateTimePicker1.Date Then
begin
ShowMessage(''Intervalo de datas inválido. A data inicial não pode ser posterior a data final!'');
DateTimePicker2.Date := DateTimePicker1.Date;
end
else
begin
Data1 := DateToStr(DateTimePicker1.Date);
Data2 := DateToStr(DateTimePicker2.Date);
With DM.cpagam do
begin
Close;
SQL.Clear;
SQL.Text := ''SELECT * FROM cpagam WHERE data_pg >= :pData1 AND data_pg <= :pData2 '';
Parameters.ParamByName(''pData1'').Value := StrToDate(Data1);
Parameters.ParamByName(''pData2'').Value := StrToDate(Data2);
Prepared;
Open;
Obs.: como teste eu já utilizo o filtro acima, porem, tem algo errado, se filtrar uma data intervalo
EX: de: 01/02/2020 à 01/03/2020
o resultado que eu tenho é esse:
01/02/2020,
01/01/2020,
01/03/2020,
parece que ele pega apenas o dia 01 e trás tudo daquele campo com dia 01.
Desde já agradeço ajuda !!
Por favor !
Tenho um sistema de cadastro com banco de dados access, neste banco eu tenho um tabela chamada: cpagam, e nesta
tabela um campo chamado: data_pg, gostaria com ajuda dos colegas criar um filtro onde eu consiga filtrar intervalos de
valores:
EX: tenho neste campo data_pg, datas da seguinte forma:
Janeiro
01/01/2020 04:10:40
02/01/2020 07:10:00
03/01/2020 08:10:40
04/01/2018 09:10:40
fevereiro
01/02/2020 11:10:40
02/02/2020 12:10:40
03/02/2020 13:10:40
março
01/03/2020 14:10:40
02/03/2020 15:10:40
03/03/2020 18:10:40
Como exemplo Gostaria de filtra todas a datas de um mês inteiro
EX: FEVEREIRO
01/02/2020 11:10:40
02/02/2020 12:10:40
03/02/2020 13:10:40
OBS.: utilizo
Data Module =========================== DM
ADOConnect = conexão com banco = Access = banco
ADOQuery = para consultas =============== cpagam
===========SQL String============
select*from cpagam where data_pg
order by data_pg
=========botão pesquisar==========
var
Data1,Data2 : string;
begin
If DateTimePicker2.Date < DateTimePicker1.Date Then
begin
ShowMessage(''Intervalo de datas inválido. A data inicial não pode ser posterior a data final!'');
DateTimePicker2.Date := DateTimePicker1.Date;
end
else
begin
Data1 := DateToStr(DateTimePicker1.Date);
Data2 := DateToStr(DateTimePicker2.Date);
With DM.cpagam do
begin
Close;
SQL.Clear;
SQL.Text := ''SELECT * FROM cpagam WHERE data_pg >= :pData1 AND data_pg <= :pData2 '';
Parameters.ParamByName(''pData1'').Value := StrToDate(Data1);
Parameters.ParamByName(''pData2'').Value := StrToDate(Data2);
Prepared;
Open;
Obs.: como teste eu já utilizo o filtro acima, porem, tem algo errado, se filtrar uma data intervalo
EX: de: 01/02/2020 à 01/03/2020
o resultado que eu tenho é esse:
01/02/2020,
01/01/2020,
01/03/2020,
parece que ele pega apenas o dia 01 e trás tudo daquele campo com dia 01.
Desde já agradeço ajuda !!
Natanael Oliveira
Curtidas 0
Respostas
Emerson Nascimento
21/03/2020
var dia, mes, ano: word; begin DecodeDate(DateTimePicker1.Date,ano,mes,dia); with DM.cpagam do begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM cpagam WHERE year(data_pg) = :pAno and month(data_pg) = :pMes'; Parameters.ParamByName('pAno').AsInteger := ano; Parameters.ParamByName('pMes').AsInteger := mes; Prepared; Open; end; end;
GOSTEI 0
Natanael Oliveira
21/03/2020
var dia, mes, ano: word; begin DecodeDate(DateTimePicker1.Date,ano,mes,dia); with DM.cpagam do begin Close; SQL.Clear; SQL.Text := 'SELECT * FROM cpagam WHERE year(data_pg) = :pAno and month(data_pg) = :pMes'; Parameters.ParamByName('pAno').AsInteger := ano; Parameters.ParamByName('pMes').AsInteger := mes; Prepared; Open; end; end;
Boa tarde amigo !
agradeço pela ajuda, o problema acima resolvi mudando o tipo de dados no campo da tabela de : texto/curto, para: data/hora...resolveu meu problema.....meu problema acima foi resolvido ,muito grato pela sua ajuda !!!
GOSTEI 0