Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) filtro por data


Guest --Daniel --

Pergunta

Guest --Daniel --

olá pessoal, estou com um probleminha aqui no meu sistema, gostaria de ajuda de vocês...

tenho uma tabela tbl_contas_apagar

nela tem um campo data_vencimento

preciso fazer um filtro pras datas de vencimento,l por exemplo... quero ver somente as contas a pagar do dia 01/11/2008 a 15/11/2008

como fazer esse filtro???

ah... meu BD é ACCESS

obrigado!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
Voce pode usar a ideia do colega Progr'amador, neste post.

olá amigo... não entendi isso não...

porque lá ele fala em gerar relatório, na verdade eu preciso filtrar esse no DBGrid

tentei fazer o que falava nesse tópico, mas não funciono não....

queria assim, na Edit1 digitar uma data e na Edit2 outra data... e dai ele mostrar na DBgrid somente os dados que estão no intervalos dos valores filtrados....

Link para o comentário
Compartilhar em outros sites

  • 0
não entendi isso não...

porque lá ele fala em gerar relatório, na verdade eu preciso filtrar esse no DBGrid

tentei fazer o que falava nesse tópico, mas não funciono não....

queria assim, na Edit1 digitar uma data e na Edit2 outra data... e dai ele mostrar na DBgrid somente os dados que estão no intervalos dos valores filtrados....

Daniel Henrique M. Doro, supondo que você use um dataset tipo query para mostrar os dados no seu DBGrid, o que você precisará é exatamente aquele tipo de consulta que lá está.

É uma consulta onde os dados são filtrados por data - não importa que seja para uso em um relatório ou em um form - será sempre daquela forma. Eu apenas diria que a linha referente a cláusula GROUP BY não se aplica ao seu caso.

Lá no exemplo, os parâmetros são preenchidos com a propriedade Text de TMaskEdit's - praticamente nenhuma diferença para seus os seus TEdit's.

Já se você usar um dataset tipo table, então as coisas mudam um pouquinho. Mas, daí, ficaremos no "achismo" porque faltam mais informações.

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0
não entendi isso não...

porque lá ele fala em gerar relatório, na verdade eu preciso filtrar esse no DBGrid

tentei fazer o que falava nesse tópico, mas não funciono não....

queria assim, na Edit1 digitar uma data e na Edit2 outra data... e dai ele mostrar na DBgrid somente os dados que estão no intervalos dos valores filtrados....

Daniel Henrique M. Doro, supondo que você use um dataset tipo query para mostrar os dados no seu DBGrid, o que você precisará é exatamente aquele tipo de consulta que lá está.

É uma consulta onde os dados são filtrados por data - não importa que seja para uso em um relatório ou em um form - será sempre daquela forma. Eu apenas diria que a linha referente a cláusula GROUP BY não se aplica ao seu caso.

Lá no exemplo, os parâmetros são preenchidos com a propriedade Text de TMaskEdit's - praticamente nenhuma diferença para seus os seus TEdit's.

Já se você usar um dataset tipo table, então as coisas mudam um pouquinho. Mas, daí, ficaremos no "achismo" porque faltam mais informações.

Abraços

olá amigo, vou ver se entendi aqui e vou tentar fazer, depois posto aqui o resultado...

estou usando dentro do DataModule... ADOQuery´s para ligações com meu banco.

obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

olá...

bom, ainda não consegui rsolver esse problema... tentei da seguinte forma:

begin
dm.q_clientes.Close;
dm.q_clientes.Sql.Clear;
dm.q_clientes.Sql.Add('Select * from tbl_clientes where fim_contrato Beetwen :dataini and :datafim');
dm.q_clientes.Parameters.ParamByName('dataini').Value := MaskEdit1.text;
dm.q_clientes.Parameters.ParamByName('datafim').Value := MaskEdit2.text;
dm.q_clientes.Open;
end;

mas é apresentado o seguinte erro:

erro de sintaxe (operador faltando) na expressão de consulta 'fim_contrato Beetwen ? and ?'

como resolver?

BD - access

ADOQuery

Link para o comentário
Compartilhar em outros sites

  • 0

Tem aqui tb outros jeitos de fazer esse filtro.

dm.q_clientes.Sql.Add('Select * from tbl_clientes where fim_contrato <> ' ' and ( data >= :DataIni and Data <= :DataFim );
begin
dm.q_clientes.Close;
dm.q_clientes.Filter:='Data >= ''' +DateToStr(Date1.date)+ ''' and fim_contrato <= '''+DateToStr(Date2.Date) +'''';
dm.q_clientes.Filtered:=True;//aqui uso 2 dateTimePicker ou 2 DateEdit
dm.q_clientes.Open;
end;

Abraços.

Editado por António44
Link para o comentário
Compartilhar em outros sites

  • 0

olá amigo...

segui o que você me passou, montei assim:

begin
dm.q_clientes.Close;
dm.q_clientes.Filter:='Data >= ''' +DateToStr(DateTimePicker1.date)+ ''' and fim_contrato <= '''+DateToStr(DateTimePicker1.Date) +'''';
dm.q_clientes.Filtered:=True;
dm.q_clientes.Open;
end;

mas quando eu faço o filtro o seguinte erro é apresentado:

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.

o que sera que esta acontecendo?

obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
begin
dm.q_clientes.Close;
dm.q_clientes.Sql.Clear;
dm.q_clientes.Sql.Add('Select * from tbl_clientes where fim_contrato Beetwen :dataini and :datafim');
dm.q_clientes.Parameters.ParamByName('dataini').Value := MaskEdit1.text;
dm.q_clientes.Parameters.ParamByName('datafim').Value := MaskEdit2.text;
dm.q_clientes.Open;
end;
mas é apresentado o seguinte erro: erro de sintaxe (operador faltando) na expressão de consulta 'fim_contrato Beetwen ? and ?'
dan_visualdm, experimente usar na atribuição ao parâmetro: StrToDate(MaskEdit1.text) e StrToDate(MaskEdit2.text), respectivamente.
begin
dm.q_clientes.Close;
dm.q_clientes.Filter:='Data >= ''' +DateToStr(DateTimePicker1.date)+ ''' and fim_contrato <= '''+DateToStr(DateTimePicker1.Date) +'''';
dm.q_clientes.Filtered:=True;
dm.q_clientes.Open;
end;

mas quando eu faço o filtro o seguinte erro é apresentado:

O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.

Aqui, eu acredito que o problema é a forma como o Access trata as datas - ele usa o # como delimitador e não ' (aspas simples). Eu sugiro que você tente fazer o primeiro método funcionar (parametrização), porque evita problemas de portabilidade se no futuro você trocar de banco de dados. Mas, se quiser seguir com esta última abordagem, use o # no lugar das aspas simples.

Este último método também não é muito interessante, se você pretende filtrar um período. É melhor que você já o faça na obtenção dos dados, pois estará minimizando o acesso ao banco e minimizando o processamento, já que não será feito o filtro sobre todos os resultados obtidos ao abrir o dataset.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

olá... não sei se fiz certo (hhe, acho que não porque ainda deu o mesmo erro)

begin
dm.q_clientes.Close;
dm.q_clientes.Sql.Clear;
dm.q_clientes.Sql.Add('Select * from tbl_clientes where fim_contrato Beetwen :dataini and :datafim');
dm.q_clientes.Parameters.ParamByName('dataini').Value := StrToDate(MaskEdit1.text);
dm.q_clientes.Parameters.ParamByName('datafim').Value := StrToDate(MaskEdit2.text);
dm.q_clientes.Open;
end;

o que tem de errado ainda?

Link para o comentário
Compartilhar em outros sites

  • 0
olá... não sei se fiz certo (hhe, acho que não porque ainda deu o mesmo erro)

dan_visualdm, esta é a mensagem não é?!

erro de sintaxe (operador faltando) na expressão de consulta 'fim_contrato Beetwen ? and ?'

como resolver?

Nada como ler direito a mensgem - só agora eu percebi. hehehe

Dá uma olhada no texto em que ele diz o tal operador que ele diz estar faltando.... Aquela abelhinha gêmea não está soando muito bem não (trocadilho... bee=abelha; twin=gêmeo) :D

a palabra é Between. Pode trocar que deve funcionar. (se não esquecemos de mais nada. rsrsrs)

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...