Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
narba Novato

Registrado: Terça-Feira, 16 de Setembro de 2014 Mensagens: 90
|
Enviada: Sex Out 17, 2014 1:21 am Assunto: Como fazer filtro data usando o DateTimePicker? [RESOLVIDO] |
|
|
como fazer filtro com data usando o DateTimePicker?
Estou usando o Delphi 7 e Interbase 6.5.
tentei assim não deu:
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; |
Editado pela última vez por narba em Seg Out 20, 2014 9:47 am, num total de 2 vezes |
|
Voltar ao Topo |
|
 |
MarlonDelphi Aprendiz

Registrado: Domingo, 5 de Janeiro de 2014 Mensagens: 117
|
Enviada: Sex Out 17, 2014 8:45 am Assunto: |
|
|
Aconselho voce fazer utilizando parametros. Assim:
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 >= :data1 and cli_data_cadastro <= :data2') ;
DataModule_01.DataSet_Cliente.ParamByName('data1').asdate := DateTimePicker1.Date;
DataModule_01.DataSet_Cliente.ParamByName('data2').asdate := DateTimePicker2.Date;
DataModule_01.DataSet_Clientes.Open;
|
Pesquise sobre Parametros que tenho certeza que vai sanar o seu problema.
Abraços. |
|
Voltar ao Topo |
|
 |
narba Novato

Registrado: Terça-Feira, 16 de Setembro de 2014 Mensagens: 90
|
Enviada: Sex Out 17, 2014 9:29 am Assunto: |
|
|
Deu certo, muito obrigado .
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;
|
|
|
Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Sex Out 17, 2014 9:30 am Assunto: |
|
|
Se não for utilizar parâmetros, utilize o comando QuotedStr para concatenar a String do SQL.
Código: |
With DataModule_01.DataSet_Clientes do
Begin
Close;
SelectSQL.Clear;
SelectSQL.Add('select * from clientes');
SelectSQL.Add(' where cli_data_cadastro >= ' + QuotedStr(DateToStr(DateTimePicker1.Date)));
SelectSQL.Add(' and cli_data_cadastro <= ' + QuotedStr(DateToStr(DateTimePicker2.Date)));
Open;
End;
|
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
 |
MarlonDelphi Aprendiz

Registrado: Domingo, 5 de Janeiro de 2014 Mensagens: 117
|
Enviada: Sex Out 17, 2014 10:04 am Assunto: |
|
|
Narba, nao sei se entendi muito bem mas, vou tentar te ensinar uma coisa pra "limpar" seu código.
Você nao precisa em todo momento fechar sua query, limpar seu sql, adicionar sql e depois abrir, trabalhe com IF e parametros sempre, isso facilitará sua vida para todo o sempre, vou tentar mostrar melhor:
Código: |
procedure Tform_consulta_clientes.RadioGroup_FiltroClick(Sender: TObject);
begin
//ESPERO QUE VOCE SAIBA O QUE O WITH DO FAÇA. CASO NAO SAIBA VOU TE FALAR. TUDO QUE ESTÁ ABAIXO DESTE BEGIN FARÁ PARTE (SE VOCE QUIZER) DO DATAMODULE_01, OU SEJA, EU NAO PRECISO COLOCAR DATAMODULE_01.DATASET_CLIENTES.CLOSE, EU SIMPLESMENTE COLOCO DATASET_CLIENTES.CLOSE PORQUE AUTOMATICAMENTE ELE FAZ PARTE DO DATAMODULE, SACOU?
with DataModule_01.DataSet_Clientes do
begin
//Perceba que independente da condição, minha query vai estar fechada e o SQL vai estar limpo. Agora só faça as condiçoes e adicione o SQL
DataSet_Clientes.Close;
DataSet_Clientes.SelectSQL.Clear;
//Desative tudo e ativo somente quando necessário, parece ser melhor para o seu caso, analise o código todo
Label_datainicial.Visible:=false;
label_datafinal.Visible:=false;
DateTimePicker1.Visible:=false;
DateTimePicker2.Visible:= false;
if RadioGroup_Filtro.ItemIndex = 0 then
begin
DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_pessoa = :fisica') ;
DataSet_Clientes.ParamByName('fisica').asString := '#39' + 'Física' + '#39';
end;
if RadioGroup_Filtro.ItemIndex = 1 then
begin
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes where cli_pessoa = :juridica') ;
DataSet_Clientes.ParamByName('juridica').asString := '#39' + 'Jurídica' + '#39';
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
DataModule_01.DataSet_Clientes.SelectSQL.Add('select * from clientes') ;
end;
DataSet_Clientes.Open;
// PERCEBA QUE EU FIZ TODAS AS MINHAS CONDIÇÕES E SÓ DEPOIS EU ABRI MINHA QUERY.
end; // Fechamento do WITH
end; //Fechamento do RadioGroup_FiltroClick
//############################################################################
|
AGORA USE ESTE CONCEITO E APLIQUE PARA SUA ORDENAÇÃO
É claro que se der algum erro neste exemplo que tentei te mostrar, pense um pouco e corrija da melhor maneira.
Uma coisa que vou te ensinar: "Quanto maior o código menor a lógica". Procure fazer seus códigos com o menor código possível e você será um excepcional programador e irá se destacar.
ABRAÇOS, ESPERO TER AJUDADO |
|
Voltar ao Topo |
|
 |
|