Filtro de campo

13/07/2004

0

Amigos do forum, estou com um grande problema.
Estou tentando fazer uma pesquisa que mostre clientes sem movimento a partir de uma determinada data. Estou usando a tabela paradox, uma table e uma TQuery. Estou fazendo da seguinte maneira:


[color=blue:d5706c2f5e]var
MSG, st, st1 : STRING;
begin

if InputQuery (´Clientes sem movimento´, ´Clientes sem movimento desde: (digite a data abaixo ´dd/mm/yyyy´)´, st) then begin

st1 := formatdatetime (´mm/dd/yyyy´, strtodate(st));

with fdm.query1 do begin
close;
sql.clear;
sql.add (´select distinct fantasia, max(data) as Data from tbpedido where data <= ´´+ st1+´´ group by fantasia order by fantasia´);
open;
end;

while not fdm.query1.Eof do begin
if fdm.query1[´fantasia´] <> null then
msg := msg + fdm.query1[´fantasia´]+ #13;
fdm.query1.next;
end;

showmessage(´Cliente sem movimento desde:´ + St + #13+ 13 + msg);
end;

end;[/color:d5706c2f5e]
O problema e que quando e feita essa pesquisa que so tem datas de apenas um ano, ele funciona, so que quando existe movimento de mais de um ano diferente, aparece a lista de todos os clientes. Como faco para resolver esse problema? :(


Aflsilva

Aflsilva

Responder

Posts

13/07/2004

Marcelino

Vc experimentou executar a SQL usando parâmetro ?

Onde se lê :
with fdm.query1 do begin
close;
sql.clear;
sql.add (´select distinct fantasia, max(data) as Data from tbpedido where data <= ´´+ st1+´´ group by fantasia order by fantasia´);
open;
end;

Faça
with fdm.query1 do begin
close;
sql.clear;
sql.add (´select distinct fantasia, max(data) as Data from tbpedido where data <= :data group by fantasia order by fantasia´);
Params.ParamByName(´data´).asDateTime := StrToDate(st);
open;
end;

[]s


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