Array
(
)

Parametro em Consulta SQL

Armindo
   - 24 nov 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.

Minha dúvida/problema:
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.


Marcio.theis
   - 25 nov 2005

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

#Código

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].asDateTime := //Data inicial informada pelo usuário
QUERY1.PARMS[1].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:


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