Parametro em Consulta SQL

24/11/2005

Tenho a seguinte instrução SQL

QUERY1.SQL.ADD(´SELECT * FROM CONTASPAGAR WHERE VENCIMENTO BETWEEN :VInicio and :VFim´);
Tenho a interface para que o usuário informe o período (data inicial e a data final) desejado.
Quando o usuário informa a data inicial e final, atribuo os dados informados em:
QUERY1.PARMS[0].asDateTime := //Data inicial informada pelo usuário
QUERY1.PARMS[1].asDateTime := //Data final informada pelo usuário
Até aqui tudo certo. Funciona beleza.

[b:a98a4ad413]Minha dúvida/problema[/b:a98a4ad413]:
Quando o usuário quer tirar um relatório com todas as contas a pagar, independentemente do vcto, ou seja, não quer especificar um período. Que valor eu atribuo ao params 0 e 1?

Obrigado.


Armindo

Respostas

25/11/2005

Marcio.theis

Para isto absta vc efetuar uma validação antes....

QUERY1.SQL.ADD(´SELECT * FROM CONTASPAGAR´);
Você somente valida se a //Data inicial informada pelo usuário esta informada e a //Data final informada pelo usuário também não está vazio, senão você passa mais intruções SQL....
QUERY1.SQL.ADD(´WHERE VENCIMENTO BETWEEN :VInicio and :VFim´); 
QUERY1.PARMS[0&93;.asDateTime := //Data inicial informada pelo usuário
QUERY1.PARMS&91;1&93;.asDateTime := //Data final informada pelo usuário


Ou, outra forma seria vc adicionar um CheckBox antes da seleção do período, ficando assim:
CheckBoxDtVencimento (ao lado) DateTimePickerDtInicio (e ao lado) DateTimePickerDtFim, onde que depois ficaria:


QUERY1.SQL.ADD(´SELECT * FROM CONTASPAGAR´);
if CheckBoxDtVencimento.Checked then
    begin
    QUERY1.SQL.ADD(´WHERE VENCIMENTO BETWEEN :VInicio and :VFim´); 
    QUERY1.PARMS[0&93;.asDateTime := //Data inicial informada pelo usuário
    QUERY1.PARMS&91;1&93;.asDateTime := //Data final informada pelo usuário
    end;



Responder Citar