pesquisa select com um parametro em três situação

Delphi

16/10/2006

preciso de um consulta assim:

[color=red:d479057af0]WITH SQLCC DO //CHEQUES a Vencer
Begin
Close;
SQL.Clear;
SQL.Add(´Select sum(valor) as totca From CHEQUE where nomecliente = :pClin and situ is null and DATACADASTRO >= :pData´);
ParamByName(´pClin´).AsString := Edit5.Text;
ParamByName(´pData´).AsSQLTimeStamp := DateTimeToSQLTimeStamp(DATE);

Open;
end;[/color:d479057af0]

o Campo situ pode esta gravado no banco como = ´Q´ ou como ´D´ ou como ´T´ ou como null.
o que preciso é buscar todos os registros que o campo situ seja diferente de ´Q´.
so estou conseguindo trazer o campo campo com valor NULL

Me ajude nesta busca


Dpinho

Dpinho

Curtidas 0

Respostas

Steve_narancic

Steve_narancic

16/10/2006

Acho que é isso que você precisa:

WITH SQLCC DO //CHEQUES a Vencer
Begin
Close;
SQL.Clear;
SQL.Add(´Select sum(valor) as totca From CHEQUE where nomecliente = :pClin and (situ is null OR situ <> :situ) and DATACADASTRO >= :pData´);
ParamByName(´pClin´).AsString := Edit5.Text;
ParamByName(´situ´).AsString := Edit6.Text;
ParamByName(´pData´).AsSQLTimeStamp := DateTimeToSQLTimeStamp(DATE);

Open;
end; 



GOSTEI 0
Dpinho

Dpinho

16/10/2006

Valeu a ajuda, estava dando erro na condição <>, mas com sua ajuda vi que faltava colocar entre parentese.
Deu certinho Obrigado


GOSTEI 0
Macario

Macario

16/10/2006

Ola.

Se o SGBDR que voce usa der suporte a clausula IN, opte pela mesma, pois com ela voce tera melhor performance.

8)


GOSTEI 0
Dpinho

Dpinho

16/10/2006

Ola. Se o SGBDR que voce usa der suporte a clausula IN, opte pela mesma, pois com ela voce tera melhor performance. 8)


Utilizo Interbase, tentei com in, mas não conseguir retornar nada, talves não tenha colocado cert, poderia me dar um exemplo de como utilizar


GOSTEI 0
Macario

Macario

16/10/2006

Ola [b:4e0887b84c]DPinho[/b:4e0887b84c].


No seu caso a instrucao passada pelo colega [b:4e0887b84c]steve_narancic[/b:4e0887b84c] e a solucao.

A clausula IN nao suporta NULL como parametro.

Exemplo:

select * from Tabela
where TIPO in (´A´,´B´,´F´,´Z´)


Neste caso a aplicacao do [b:4e0887b84c]IN[/b:4e0887b84c] tem melhor performance do que varias clausulas [b:4e0887b84c]OR[/b:4e0887b84c].

Espero ter lhe ajudado em algo.

[]´s


GOSTEI 0
POSTAR