ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Filtrar entre datas

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
pipeloko
Novato
Novato


Registrado: Domingo, 13 de Junho de 2010
Mensagens: 4

MensagemEnviada: Sex Jun 18, 2010 10:44 pm    Assunto: Filtrar entre datas Responder com Citação

Oi.

Sou iniciante no delphi e queria fazer uma coisa aqui funcionar.


Código:

[b]DM.CDSlancamentos.IndexName:= 'ind_data';[/b]
DM.CDSlancamentos.SetRangeStart;
DM.CDSlancamentos.FieldByName('data_lancamento').AsString := Edit1.Text;
DM.CDSlancamentos.SetRangeEnd;
DM.CDSlancamentos.FieldByNAme('data_lancamento').AsString := Edit2.Text


DM = nome do DataModule
CDSlancamentos = Client Data set (tabela)

Bom, este é um filtro que seleciona os "dias" registrados entre a data incial e a data final.
OK.

Mas a minha dificuldade é que ainda não entendi muito bem como funciona o IndexName e como faço para criá-lo.
Alguem consegue me explicar como faço para fazer funcionar?

código retirado de: http://www.planetadelphi.com.br/dica/5761/filtrar-uma-tabela-por-um-intervalo-de-datas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jun 18, 2010 10:54 pm    Assunto: Re: Filtrar entre datas Responder com Citação

pipeloko escreveu:
Oi.

Sou iniciante no delphi e queria fazer uma coisa aqui funcionar.


Código:

[b]DM.CDSlancamentos.IndexName:= 'ind_data';[/b]
DM.CDSlancamentos.SetRangeStart;
DM.CDSlancamentos.FieldByName('data_lancamento').AsString := Edit1.Text;
DM.CDSlancamentos.SetRangeEnd;
DM.CDSlancamentos.FieldByNAme('data_lancamento').AsString := Edit2.Text


DM = nome do DataModule
CDSlancamentos = Client Data set (tabela)

Bom, este é um filtro que seleciona os "dias" registrados entre a data incial e a data final.
OK.

Mas a minha dificuldade é que ainda não entendi muito bem como funciona o IndexName e como faço para criá-lo.
Alguem consegue me explicar como faço para fazer funcionar?

código retirado de: http://www.planetadelphi.com.br/dica/5761/filtrar-uma-tabela-por-um-intervalo-de-datas
Qual banco de dados vc usa?

Acho melhor vc optar por um query para a consulta utilizando linguagem SQL.

Este IndexName serve apenas para campos indexados.

Com select é mais simples e melhor desempenho

exemplo
Código:

select * from trabela
where campodata between :dataini and :datafin


No aplicativo
Código:
with query do
begin
   close;
   params[0].asdate := datetostr(edit1.text);
   params[1].asdate := datetostr(edit2.text);
   open;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pipeloko
Novato
Novato


Registrado: Domingo, 13 de Junho de 2010
Mensagens: 4

MensagemEnviada: Sex Jun 18, 2010 11:31 pm    Assunto: Responder com Citação

Não estou usando Banco de dados, só o DataModule do programa mesmo.
Não tem como usar SQL Aqui. Não tem uma maneira de fazer isso sem usar SQL?


(Se eu pudesse usar sql, já teria usado, mas não posso :s )
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Sáb Jun 19, 2010 1:40 am    Assunto: Responder com Citação

pipeloko escreveu:
Não estou usando Banco de dados, só o DataModule do programa mesmo.
Não tem como usar SQL Aqui. Não tem uma maneira de fazer isso sem usar SQL?


(Se eu pudesse usar sql, já teria usado, mas não posso :s )



não entendi, vc ta gravando os dados a onde?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
pipeloko
Novato
Novato


Registrado: Domingo, 13 de Junho de 2010
Mensagens: 4

MensagemEnviada: Sáb Jun 19, 2010 10:41 am    Assunto: Responder com Citação

Estou Gravando os dados num DataModule.

E neste caso, no ClientDataSet chamado "CDSlancamentos".
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Jun 20, 2010 12:45 pm    Assunto: Responder com Citação

vc está utilizando xml datapacket, neste caso é possível trabalhar com ranges...

Neste caso vc tem de deffinir no cds os seguintes comandos de definição de faixa:

Código:

//Definir a faixa de datas
Cds.IndexFieldNames := 'DATA1';
Cds.CancelRange;
Cds.Filtered := False;
Cds.SetRange([DATA_INI], [DATA_FIN]);
Cds.SetRangeStart;
Cds.FieldByName('DATA_INI').AsDateTime := DATA_INI;
Cds.SetRangeEnd;
Cds.FieldByName('DATA_FIM').AsDateTime := DATA_FIN;
Cds.ApplyRange;




bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
pipeloko
Novato
Novato


Registrado: Domingo, 13 de Junho de 2010
Mensagens: 4

MensagemEnviada: Dom Jun 20, 2010 6:57 pm    Assunto: Responder com Citação

Rá!
Valeu ae!
Modifiquei um pouco o código, agora to conseguindo fazer a pesquisa!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Jun 21, 2010 9:58 am    Assunto: Responder com Citação

Disponha amigo...



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
je_mugica
Novato
Novato


Registrado: Segunda-Feira, 7 de Junho de 2010
Mensagens: 46

MensagemEnviada: Seg Jun 21, 2010 11:11 am    Assunto: duvida Responder com Citação

o post do adriano_servitec da para ser usado com o bd access?
e se da pq da erro no params?

inté
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jun 21, 2010 1:55 pm    Assunto: Re: duvida Responder com Citação

je_mugica escreveu:
o post do adriano_servitec da para ser usado com o bd access?
e se da pq da erro no params?

inté
com ado/access é diferente...

Não sei muito bem, mais tem que ser algo assim

Código:
parameters.parambyname('campo').asdate := variavel;


De uma pesquisada aqui no forum, pq não tenho certeza
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB