Ajuda vencimento em delphi

04/06/2017

0

Seguinte, eu tenho um programa que preciso que me liste os clientes com pagamento vencido, consegui fazer ele listar usando uma query e jogando os clientes em um list box na tela principal, até ai tudo bem realizei os testes no final de maio e estava funcionando tranquilamente, agora em junho ele está apresentando problemas e não consigo saber o porquê. Se hoje é 04/06/2017 e o vencimento for 04/05/2017 ele não me mostra por exemplo agora se o vencimento for 04/04/2017 ele funciona normal, segue abaixo o código que estou usando.
procedure TFrmPri.SpeedButton4Click(Sender: TObject);
begin
  listbox1.Clear;
  listbox2.Clear;
  listbox3.Clear;
  with dm.Query do
  begin
    close;
    sql.Clear;
    sql.Add('select * from Clientes where Vencimento <='+FormatDateTime('#dd/mm/yyyy#',now));
    sql.Add('Order by Vencimento');
    open;
  end;
  dm.Query.First;
  while not (dm.Query.Eof) do
  begin
  Listbox1.Items.Add(dm.Query.FieldByName('Código').AsString);
  Listbox2.Items.Add(dm.Query.FieldByName('Nadador').AsString);
  Listbox3.Items.Add(dm.Query.FieldByName('Vencimento').AsString);
  Dm.Query.Next;
  end;
  Dm.Query.Close;
end;


Obs: Uso banco de dados Access
Diego Pereira

Diego Pereira

Responder

Posts

05/06/2017

Robson Morais

aparentemente o sql está certo, não sei como é a formatação da data para o access, mas tentou pegar o mesmo sql que ele gera e rodar no access para ver o retorno ? tem faturas vencidas para listar ? vi que está utilizando now, ele pega a data do computador, a data dele está certa ?
Responder

05/06/2017

Diego Pereira

Sim, a data está correta, e tem uma fatura de teste vencida para teste a partir do mês 04/04/2017 ela para de funcionar antes dessa data o sql funciona normal, ainda não fiz o teste no acess, farei logo que eu sair do trabalho e chegar em casa.
Responder

05/06/2017

Júlio Ferreira

Amigo,

Aconselho você a começar usar consultas parametrizadas. Principalmente, quando é data, o Delphi pode dar algum problema com o cliente da conexão com o banco de dados. Queries parametrizadas são quase infalíveis!

No seu exemplo, seria algo como:
with dm.Query do
begin
close;
prepared := true;
sql.Clear;
sql.Add('select * from Clientes where Vencimento <= :pDataVencimento' )
sql.Add('Order by Vencimento');
parameters.parambyname( 'pDataVencimento' ).DataType := ftDate;
parameters.parambyname( 'pDataVencimento' ).Value := Now;
Open;
Responder

05/06/2017

Robson Morais

discordo, tenho um projeto grande que funciona em mais de 30 terminais ao mesmo tempo com conexões locais e online em mais 14 empresas e nunca tive problema aquela maneira, mas claro com o access nunca fiz, mas ai pode ser outra coisa.
Responder

06/06/2017

Júlio Ferreira

Amigo,

Se vc usa essa solução em mais de 30 terminais e em 14 empresas e nunca teve problema... qual é o seu problema então? Se funciona, pq não está funcionando?
Responder

06/06/2017

Robson Morais

O problema é do nosso amigo Diego Pereira e não meu, só discordei do comentário que fez que o delphi pode dar problema com o cliente da conexão com o banco de dados da maneira que ele utiliza.
Responder

06/06/2017

Diego Pereira

Já consegui resolver amigos, o problema esta no formato da data, não sei qual motivo mas se aplicar a data no formato de mm/dd/yyyy eu consigo ter sucesso na minha aplicação, mas tentarei da forma como Jcmferreira disse, para ver se consigo um desempenho maior tanto no meu aprendizado com a linguagem, quanto no meu software.

Obrigado,desde já
Att: Diego Dias Pereira
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar