Fórum como fazer filtro com data usando o DateTimePicker? #498132

17/10/2014

0

como fazer filtro com data usando o DateTimePicker?

Estou usando o Delphi 7 e Interbase 6.5.

tentei assim não deu:


DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_data_cadastro >=' +#39+ DateToStr(DateTimePicker1.Date) +#39+ 'and cli_data_cadastro <= ' +#39+ DateToStr(DateTimePicker2.Date) +#39) ;
DataModule_01.DataSet_Clientes.Open;
Narba Silva

Narba Silva

Responder

Posts

17/10/2014

Marisiana Battistella

Eu acho q o problema está ocorrendo na sintaxe quando vc concatena as informações para montar o SELECT. Tenta assim pra ver se funciona:
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add(''select * from clientes where cli_data_cadastro >= '' +DateTimePicker1.Date+ '' and cli_data_cadastro <= ''+DateTimePicker2.Date+'';'');
DataModule_01.DataSet_Clientes.Open;
Responder

Gostei + 0

17/10/2014

Narba Silva

Build
[Error] unConsulta_Clientes.pas(320): ')' expected but identifier 'select' found
[Error] unConsulta_Clientes.pas(320): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(320): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(320): Incompatible types: 'String' and 'TDate'
[Error] unConsulta_Clientes.pas(320): Operator not applicable to this operand type
[Error] unConsulta_Clientes.pas(320): Incompatible types: 'String' and 'TDate'
[Error] unConsulta_Clientes.pas(325): Declaration expected but 'IF' found
[Error] unConsulta_Clientes.pas(327): Undeclared identifier: 'Label_datainicial'
[Error] unConsulta_Clientes.pas(327): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(328): Undeclared identifier: 'label_datafinal'
[Error] unConsulta_Clientes.pas(328): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(329): Undeclared identifier: 'DateTimePicker1'
[Error] unConsulta_Clientes.pas(329): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(330): Undeclared identifier: 'DateTimePicker2'
[Error] unConsulta_Clientes.pas(330): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(331): '.' expected but ';' found
[Error] unConsulta_Clientes.pas(334): Identifier redeclared: 'Finalization'
[Error] unConsulta_Clientes.pas(335): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(336): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(337): Missing operator or semicolon
[Error] unConsulta_Clientes.pas(338): Missing operator or semicolon
[Warning] unConsulta_Clientes.pas(345): Text after final 'END.' - ignored by compiler
[Error] unConsulta_Clientes.pas(53): Unsatisfied forward or external declaration: 'Tform_consulta_clientes.RadioGroup_OrdenacaoClick'
[Fatal Error] Software_Dupont.dpr(9): Could not compile used unit 'unConsulta_Clientes.pas'
Responder

Gostei + 0

17/10/2014

Narba Silva

Deu certo, muito obrigado Very Happy Very Happy Very Happy .


Código:
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_data_cadastro >=' +#39+ DateToStr(DateTimePicker1.Date) +#39+ 'and cli_data_cadastro <= ' +#39+ DateToStr(DateTimePicker2.Date) +#39) ;
DataModule_01.DataSet_Clientes.Open;




Quem sabe vc tambem possa me ajudar em outra questao.
Nao sei se fiz errado mais eu fiz um RadioGroup para filtro e outro para ordenação.

Mais quando eu escolho um filtro tipo pessoa fisica e depois ordenação , o filtro sai. Dai estou tentando pensar como fazer para o filtro nao sair. Alguma susgetao?

Código:

procedure Tform_consulta_clientes.RadioGroup_FiltroClick(Sender: TObject);
begin

if RadioGroup_Filtro.ItemIndex = 0 then
begin
Label_datainicial.Visible:=false;
label_datafinal.Visible:=false;
DateTimePicker1.Visible:=false;
DateTimePicker2.Visible:= false;

DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_pessoa = ' +#39+'Física'+#39) ;
DataModule_01.DataSet_Clientes.Open;

end;

if RadioGroup_Filtro.ItemIndex = 1 then
begin
Label_datainicial.Visible:=false;
label_datafinal.Visible:=false;
DateTimePicker1.Visible:=false;
DateTimePicker2.Visible:= false;

DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_pessoa = ' +#39+'Jurídica'+#39) ;
DataModule_01.DataSet_Clientes.Open;

end;

if RadioGroup_Filtro.ItemIndex = 2 then
begin
Label_datainicial.Visible:=true;
label_datafinal.Visible:=true;
DateTimePicker1.Visible:=true;
DateTimePicker2.Visible:= true;


end;

if RadioGroup_Filtro.ItemIndex = 3 then
begin
Label_datainicial.Visible:=true;
label_datafinal.Visible:=true;
DateTimePicker1.Visible:=true;
DateTimePicker2.Visible:= true;
end;

if RadioGroup_Filtro.ItemIndex = 4 then
begin
Label_datainicial.Visible:=false;
label_datafinal.Visible:=false;
DateTimePicker1.Visible:=false;
DateTimePicker2.Visible:= false;

DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes') ;
DataModule_01.DataSet_Clientes.Open;

end;
end;

//############################################################################
//
procedure Tform_consulta_clientes.RadioGroup_OrdenacaoClick(
Sender: TObject);
begin

if RadioGroup_Ordenacao.ItemIndex = 0 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes order by cli_nome');
DataModule_01.DataSet_Clientes.Open;
end;

if RadioGroup_Ordenacao.ItemIndex = 1 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes order by cli_razao_social');
DataModule_01.DataSet_Clientes.Open;
end;

if RadioGroup_Ordenacao.ItemIndex = 2 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes order by cli_nome_fantasia');
DataModule_01.DataSet_Clientes.Open;
end;

if RadioGroup_Ordenacao.ItemIndex = 3 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes order by cli_data_cadastro');
DataModule_01.DataSet_Clientes.Open;
end;

if RadioGroup_Ordenacao.ItemIndex = 4 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes order by cli_data_registro_nire');
DataModule_01.DataSet_Clientes.Open;
end;

if RadioGroup_Ordenacao.ItemIndex = 5 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes order by cli_ultima_alteracao');
DataModule_01.DataSet_Clientes.Open;
end;


if RadioGroup_Ordenacao.ItemIndex = 6 then
begin
DataModule_01.DataSet_Clientes.Close;
DataModule_01.DataSet_Clientes.SelectSQL.Clear;
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes');
DataModule_01.DataSet_Clientes.Open;
end;

end;
Responder

Gostei + 0

17/10/2014

Marcos Saffran

Bom dia Narba,
tente o seguinte:

DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_data_cadastro >= ' + QuotedStr(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date)) + 'and cli_data_cadastro <= ' + QuotedStr(FormatDateTime('yyyy-mm-dd', DateTimePicker2.Date)) ;

lembre-se de configurar no "FormatDateTime" o padrão do seu banco de dados, no meu exemplo está como "ano-mês-dia".
Responder

Gostei + 0

17/10/2014

Marisiana Battistella

Deu certo, muito obrigado Very Happy Very Happy Very Happy .

Que bom que deu certo!!
Imaginei que teria que incluir a conversão de datas.
Estranho, no exemplo que postei as aspas não ficaram de acordo com eu tinha definido...
Responder

Gostei + 0

17/10/2014

Marisiana Battistella

Quem sabe vc tambem possa me ajudar em outra questao.
Nao sei se fiz errado mais eu fiz um RadioGroup para filtro e outro para ordenação.

Mais quando eu escolho um filtro tipo pessoa fisica e depois ordenação , o filtro sai. Dai estou tentando pensar como fazer para o filtro nao sair. Alguma susgetao?


Em que momento é que ele perde o filtro? É quando Salva uma alteração, inclusão, ou pesquisar?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar