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 

Ajuda Filtrar campos de datas ( Resolvido )

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


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Ter Out 27, 2009 2:41 pm    Assunto: Ajuda Filtrar campos de datas ( Resolvido ) Responder com Citação

Amigos eu preciso verificar pela opção selecionada no combobox que é contas pagas e a pagar que listara as pagas e a vencer na data inicial e data final.

ex: seleciono no combobox contas pagas e a pagar, digito um periodo de data inicial e final para saber se existe vencimento para o periodo informado e e oque ja foi pago também no mesmo periodo.

caso não encontre nada nos dois campos de datas, receberei uma mensagem que não existe contas pagas e a pagar no periodo solicitado.

caso exista algo nos campos das datas exibirá no quickrep o resultado de contas pagas e a pagar.

bom eu fiz este codigo mas obtive foi um erro quando mando executar a rotina.

ERRRO: " Filter expression incorrectly terminated'

entendi que meu codigo para filtrar esta terminando errado, mas o que não sei.

abaixo esta meu codigo.

If ComboBox1.ItemIndex = 1 then
begin
TbParc.Filter:='Vencimento >='+QuotedStr(datetostr(Inicial.Date))+' and Vencimento <='+QuotedStr(datetostr(Final.Date))+'DataPagto>='+QuotedStr(datetostr(Inicial.Date))+'and DataPagto<='+QuotedStr(datetostr(Final.Date));
TbParc.Filtered := True;

if tbParc.RecordCount = 0 then
begin
Showmessage ('Não Existe Contas a Pagar e Pagas no Período Solicitado !');
Inicial.SetFocus;
exit;
end;
Quickrep1.Preview;
end;

bom me ajude a corrigir este codigo, eu não sei realmente filtrar em dois campos de data, tentei mas não deu certo.

mesmo os dois campos sendo da mesma tabela

o combobox esta ia como =1 é porque ja faço um filtro somente para contas a pagar na opção 0 do combobox, nesta opção esta funcionando normal.
aguardo a ajuda dos colegas.


Editado pela última vez por vaninho em Qua Out 28, 2009 11:59 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
edsonalves
Colaborador
Colaborador


Registrado: Terça-Feira, 27 de Janeiro de 2009
Mensagens: 1938
Localização: Bauru - SP

MensagemEnviada: Ter Out 27, 2009 3:11 pm    Assunto: Responder com Citação

Amigo,
por que vc não pega o mesmo exemplo do outro tópico que vc criou para saber as comissões dos vendedores, é a mesma coisa com as querys.
_________________
Cria em mim, ó Deus, um coração puro, e renova em mim um espírito reto.
http://twitter.com/edson_alves_
Skype: edson.alvesan
http://www.vacabikers.wordpress.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Yahoo Messenger MSN Messenger
infotec.dvd
Profissional
Profissional


Registrado: Quarta-Feira, 23 de Setembro de 2009
Mensagens: 677
Localização: Vitória ES

MensagemEnviada: Ter Out 27, 2009 3:19 pm    Assunto: Responder com Citação

filtro usando TTable nao é mto legal de fazer. usa sql como o edson falou.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
danilo.vitolo
Colaborador
Colaborador


Registrado: Terça-Feira, 3 de Março de 2009
Mensagens: 1029
Localização: São Paulo - SP

MensagemEnviada: Ter Out 27, 2009 3:31 pm    Assunto: Re: Ajuda Filtrar campos de datas Responder com Citação

vaninho escreveu:
Amigos eu preciso verificar pela opção selecionada no combobox que é contas pagas e a pagar que listara as pagas e a vencer na data inicial e data final.

ex: seleciono no combobox contas pagas e a pagar, digito um periodo de data inicial e final para saber se existe vencimento para o periodo informado e e oque ja foi pago também no mesmo periodo.

caso não encontre nada nos dois campos de datas, receberei uma mensagem que não existe contas pagas e a pagar no periodo solicitado.

caso exista algo nos campos das datas exibirá no quickrep o resultado de contas pagas e a pagar.

bom eu fiz este codigo mas obtive foi um erro quando mando executar a rotina.

ERRRO: " Filter expression incorrectly terminated'

entendi que meu codigo para filtrar esta terminando errado, mas o que não sei.

abaixo esta meu codigo.

If ComboBox1.ItemIndex = 1 then
begin
TbParc.Filter:='Vencimento >='+QuotedStr(datetostr(Inicial.Date))+' and Vencimento <='+QuotedStr(datetostr(Final.Date))+'DataPagto>='+QuotedStr(datetostr(Inicial.Date))+'and DataPagto<='+QuotedStr(datetostr(Final.Date));
TbParc.Filtered := True;

if tbParc.RecordCount = 0 then
begin
Showmessage ('Não Existe Contas a Pagar e Pagas no Período Solicitado !');
Inicial.SetFocus;
exit;
end;
Quickrep1.Preview;
end;

bom me ajude a corrigir este codigo, eu não sei realmente filtrar em dois campos de data, tentei mas não deu certo.

mesmo os dois campos sendo da mesma tabela

o combobox esta ia como =1 é porque ja faço um filtro somente para contas a pagar na opção 0 do combobox, nesta opção esta funcionando normal.
aguardo a ajuda dos colegas.




Amigo... só está faltando um and aí...

veja :

If ComboBox1.ItemIndex = 1 then
begin
TbParc.Filter:='Vencimento >='+QuotedStr(datetostr(Inicial.Date))+' and Vencimento <='+QuotedStr(datetostr(Final.Date))+'AND DataPagto>='+QuotedStr(datetostr(Inicial.Date))+'and DataPagto<='+QuotedStr(datetostr(Final.Date));
TbParc.Filtered := True;

if tbParc.RecordCount = 0 then
begin
Showmessage ('Não Existe Contas a Pagar e Pagas no Período Solicitado !');
Inicial.SetFocus;
exit;
end;
Quickrep1.Preview;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
vaninho
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Ter Out 27, 2009 3:39 pm    Assunto: Re: Ajuda Filtrar campos de datas Responder com Citação

Acrescentei o AND Como Disse parou de dar erro, mas ele só filtrou contas pagas e não mostrou a pagar no mesmo periodo.


como disse gostaria que exibise pagas e a pagar.

caso existam no periodo informado no inicial e final.

a pagar é o campo vencimento e pagas é o campo datapagto.

o que ainda esta errado?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
afarias
Aprendiz
Aprendiz


Registrado: Domingo, 25 de Outubro de 2009
Mensagens: 197
Localização: Recife, PE

MensagemEnviada: Ter Out 27, 2009 3:44 pm    Assunto: Responder com Citação

talvez o q queira:

(vencimento >= 'd1' and vencimento <= 'd2') OR (datapagto >= 'd1' and datapagto <= 'd2')


T+
_________________
Acompanhe: SUPORTE, A SÉRIE:
http://andre.openintelligence.com.br/

Orkut: http://www.orkut.com.br/Main#Community?rl=cpn&cmm=96459906
Twitter: http://twitter.com/Andre_Suporte
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
vaninho
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Ter Out 27, 2009 4:04 pm    Assunto: Responder com Citação

[quote="afarias"]talvez o q queira:

(vencimento >= 'd1' and vencimento <= 'd2') OR (datapagto >= 'd1' and datapagto <= 'd2')


TbParc.Filter:=(Vencimento >='Inicial.date' and Vencimento <='Final.Date)'or (DataPagto>='Inicial.Date'and DataPagto<='Final.date');


adaptei desse jeito acima, mas esta dando erro : undeclared indentifier vencimento

o que faço agora?
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: Ter Out 27, 2009 10:07 pm    Assunto: Responder com Citação

[quote="vaninho"]
afarias escreveu:
talvez o q queira:

(vencimento >= 'd1' and vencimento <= 'd2') OR (datapagto >= 'd1' and datapagto <= 'd2')


TbParc.Filter:=(Vencimento >='Inicial.date' and Vencimento <='Final.Date)'or (DataPagto>='Inicial.Date'and DataPagto<='Final.date');


adaptei desse jeito acima, mas esta dando erro : undeclared indentifier vencimento

o que faço agora?
Existe este campo "vencimento" na tabela?

Olhando um post teu anterior a este, desconfio, que vc não trouxe os campos para o tfields do teu componente dataset, causando isso a reclamação da falta deste campo acima.

Não sei se neste casoi ai resolveria assim
Código:
fieldbyname('Vencimento').asDate


Tente ai, qualquer coisa volte a postar.
_________________
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
vaninho
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Qua Out 28, 2009 6:52 am    Assunto: Responder com Citação

Esta caso não é como o outro topico, e o campo vencimento existe sim e esta Tfields.

fiz como o adriano disse usando: fieldbyname('Vencimento').asDate

agora o erro é : value assigned to 'data' never used
e undeclared identifier Fieldbyname.

agora que não estou entendo mais nada.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
afarias
Aprendiz
Aprendiz


Registrado: Domingo, 25 de Outubro de 2009
Mensagens: 197
Localização: Recife, PE

MensagemEnviada: Qua Out 28, 2009 7:52 am    Assunto: Responder com Citação

|agora o erro é : value assigned to 'data' never used
|e undeclared identifier Fieldbyname.

Cara .. cê tá perdido. Calma... respire, tome um copo d'agua, repita algum mantra, dai volte e depure sua aplicação.

Essas outras 2 mensagens ai não tem NADA a ver com o problema em questão. Qualquer coisa posta ai novidades -- ALIAIS... Se possível, poste aqui o código para podermos analisar.

Very Happy


T+
_________________
Acompanhe: SUPORTE, A SÉRIE:
http://andre.openintelligence.com.br/

Orkut: http://www.orkut.com.br/Main#Community?rl=cpn&cmm=96459906
Twitter: http://twitter.com/Andre_Suporte


Editado pela última vez por afarias em Qua Out 28, 2009 7:54 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
adriano_servitec
Colaborador
Colaborador


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

MensagemEnviada: Qua Out 28, 2009 7:54 am    Assunto: Responder com Citação

vaninho escreveu:
agora o erro é : value assigned to 'data' never used
e undeclared identifier Fieldbyname.


Este erro apareçe pq vc não declarou a qual dataset pertence este fieldbyname

exemplo
Código:
query1.fieldbyname('campo').value;

_________________
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
vaninho
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Qua Out 28, 2009 8:21 am    Assunto: Responder com Citação

Ja respirei, tomei um copo de agua, e esta ai o codigo todo.
eu não estou usando Tquery e sim tabela

procedure TFrmConPagarPer.BitBtn1Click(Sender: TObject);
begin
if ComboBox1.Text = '' then
begin
Showmessage ('Selecione o Tipo de Listagem Antes da Impressão !');
ComboBox1.SetFocus end else
begin

If final.Date <inicial>='Inicial.date' and fieldbyname('Vencimento').asDate <='Final.Date)'or (DataPagto>='Inicial.Date'and DataPagto<='Final.date');
TbParc.Filtered := True;
if tbParc.RecordCount = 0 then
begin
Showmessage ('Não Existe Contas a Pagar no Período Solicitado !');
Inicial.SetFocus;
exit;
end;
If RadioGroup1.ItemIndex = 0 then
QuickRep2.Preview else
If RadioGroup1.ItemIndex = 1 then
QuickRep2.Print;
End;
End;
end;
end;

coloquei a tabela.fiedbyname e tenho o erro :

Undeclared indentifier asDate.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
danilo.vitolo
Colaborador
Colaborador


Registrado: Terça-Feira, 3 de Março de 2009
Mensagens: 1029
Localização: São Paulo - SP

MensagemEnviada: Qua Out 28, 2009 10:04 am    Assunto: Responder com Citação

Amigo... só faltou um ' no seu código (antes de começar a usar o fieldbyname lá no post anterior)....



olhe o codigo como o Adriano postou... masss usando o OR ao inves de AND

If ComboBox1.ItemIndex = 1 then
begin
TbParc.Filter:='Vencimento >='+QuotedStr(datetostr(Inicial.Date))+' and Vencimento <='+QuotedStr(datetostr(Final.Date))+' OR DataPagto>='+QuotedStr(datetostr(Inicial.Date))+'and DataPagto<='+QuotedStr(datetostr(Final.Date));
TbParc.Filtered := True;

if tbParc.RecordCount = 0 then
begin
Showmessage ('Não Existe Contas a Pagar e Pagas no Período Solicitado !');
Inicial.SetFocus;
exit;
end;
Quickrep1.Preview;
end;

Teste ai
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
vaninho
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Qua Out 28, 2009 11:58 am    Assunto: Responder com Citação

Valeu Danilo, deu certo, obrigado a você e a todos que contribuiram dando suas dicas.

Deus Abençoe a todos.
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