| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
vaninho Membro Junior

Registrado: Segunda-Feira, 16 de Outubro de 2006 Mensagens: 352
|
Enviada: Ter Out 27, 2009 2:41 pm Assunto: Ajuda Filtrar campos de datas ( Resolvido ) |
|
|
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 |
|
 |
edsonalves Colaborador


Registrado: Terça-Feira, 27 de Janeiro de 2009 Mensagens: 1938 Localização: Bauru - SP
|
Enviada: Ter Out 27, 2009 3:11 pm Assunto: |
|
|
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 |
|
 |
infotec.dvd Profissional

Registrado: Quarta-Feira, 23 de Setembro de 2009 Mensagens: 677 Localização: Vitória ES
|
Enviada: Ter Out 27, 2009 3:19 pm Assunto: |
|
|
| filtro usando TTable nao é mto legal de fazer. usa sql como o edson falou. |
|
| Voltar ao Topo |
|
 |
danilo.vitolo Colaborador

Registrado: Terça-Feira, 3 de Março de 2009 Mensagens: 1029 Localização: São Paulo - SP
|
Enviada: Ter Out 27, 2009 3:31 pm Assunto: Re: Ajuda Filtrar campos de datas |
|
|
| 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 |
|
 |
vaninho Membro Junior

Registrado: Segunda-Feira, 16 de Outubro de 2006 Mensagens: 352
|
Enviada: Ter Out 27, 2009 3:39 pm Assunto: Re: Ajuda Filtrar campos de datas |
|
|
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 |
|
 |
afarias Aprendiz


Registrado: Domingo, 25 de Outubro de 2009 Mensagens: 197 Localização: Recife, PE
|
|
| Voltar ao Topo |
|
 |
vaninho Membro Junior

Registrado: Segunda-Feira, 16 de Outubro de 2006 Mensagens: 352
|
Enviada: Ter Out 27, 2009 4:04 pm Assunto: |
|
|
[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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Out 27, 2009 10:07 pm Assunto: |
|
|
[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 |
|
 |
vaninho Membro Junior

Registrado: Segunda-Feira, 16 de Outubro de 2006 Mensagens: 352
|
Enviada: Qua Out 28, 2009 6:52 am Assunto: |
|
|
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 |
|
 |
afarias Aprendiz


Registrado: Domingo, 25 de Outubro de 2009 Mensagens: 197 Localização: Recife, PE
|
Enviada: Qua Out 28, 2009 7:52 am Assunto: |
|
|
|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.
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
| Voltar ao Topo |
|
 |
vaninho Membro Junior

Registrado: Segunda-Feira, 16 de Outubro de 2006 Mensagens: 352
|
Enviada: Qua Out 28, 2009 8:21 am Assunto: |
|
|
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 |
|
 |
danilo.vitolo Colaborador

Registrado: Terça-Feira, 3 de Março de 2009 Mensagens: 1029 Localização: São Paulo - SP
|
Enviada: Qua Out 28, 2009 10:04 am Assunto: |
|
|
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 |
|
 |
vaninho Membro Junior

Registrado: Segunda-Feira, 16 de Outubro de 2006 Mensagens: 352
|
Enviada: Qua Out 28, 2009 11:58 am Assunto: |
|
|
Valeu Danilo, deu certo, obrigado a você e a todos que contribuiram dando suas dicas.
Deus Abençoe a todos. |
|
| Voltar ao Topo |
|
 |
|