Como passar um valor nulo para um parametro de uma SQL

Firebird

25/06/2005

eX: wITH Sql_Dados do Begin
Sql.Add(´SELECT CODCLI, NOME FROM CLIENTES´);
Sql.Add(´WHERE (CODCLI=:PCODCLI) or (:TODOS = 1)´);
Params.ParamByName(´Pcodcli´).AsInteger := 1;
Params.ParamByName(´Todos´).AsInteger := 0;
Open;
End;

Como passar um valor nulo para um parametro Pcodcli/Todos sem ser o Zero ?


Desde já meus agradecimentos, a quem puder me ajudar.

T+

ANT.CARLOS/SP


Ant.carlos/sp

Ant.carlos/sp

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

25/06/2005

Cara, eu acho que viajei na maionese nesse comando, mas tenta isso:

Params.ParamByName(´Todos´).AsValue := Null;

Não testei. Eu sei que se estivesse digitando o comando dentro do banco, tipo no IbConsole por exemplo você poderia colocar direto o Null ex:


UPDATE TABELA SET CAMPO = NULL WHERE CAMPO = 0

isso funcionaria mesmo para select.


GOSTEI 0
Ant.carlos/sp

Ant.carlos/sp

25/06/2005

Caro amigo!
Obrigado pela atenção, mas este comando não é aceito como valor de parametro:

[color=red:5f95975863]Cara, eu acho que viajei na maionese nesse comando, mas tenta isso:

Params.ParamByName(´Todos´).AsValue := Null; [/color:5f95975863]

T+

ANT.CARLOS/SP


GOSTEI 0
Adriano Santos

Adriano Santos

25/06/2005

Caramba,

Eis a dúvida das dúvidas...
Cara, fiz uns testes aqui e tb não consegui. Doidera né?


GOSTEI 0
Bon Jovi

Bon Jovi

25/06/2005

tenta assim:
SQLDataSet1.ParamByName(´xx´).Clear;
ou:
SQLDataSet1.ParamByName(´xx´).Value := null;


GOSTEI 0
Adriano Santos

Adriano Santos

25/06/2005

Bon Jovi, não funcionou cara, mas também não deu erro.

Aconteceu que não trouxe absolutamente nada no resultado. Eu cadastrei na tabela teste que criei quatro registros, sendo dois com um dos campos nulo, e tentei retornar os registros nulos e nada.

deve ter uma solução isso, vamos vasculhar...


GOSTEI 0
Sandra

Sandra

25/06/2005

[...] or (:TODOS = 1)´);
[...]
       Params.ParamByName(´Todos´).AsInteger := 0;


Se TODOS é um parâmetro, por que no where = 1 e depois, é passado o valor 0(zero) para ele? :roll:


GOSTEI 0
Bon Jovi

Bon Jovi

25/06/2005

Foi mal, só tinha visto a questao relacionada a como atribuir null no parametro.


GOSTEI 0
Ant.carlos/sp

Ant.carlos/sp

25/06/2005

Para Sandra.


[color=red:543756f4ec][color=orange]Código:
[...] or (:TODOS = 1)´);
[...]
Params.ParamByName(´Todos´).AsInteger := 0;


Se TODOS é um parâmetro, por que no where = 1 e depois, é passado o valor 0(zero) para ele? [/color:543756f4ec][/color]


---------------------------------------
WITH Sql_Dados do Begin
Sql.Add(´SELECT CODCLI, NOME FROM CLIENTES´);
Sql.Add(´WHERE (CODCLI=:PCODCLI) or (:TODOS = 1)´);
Params.ParamByName(´Pcodcli´).AsInteger := 1;
Params.ParamByName(´Todos´).AsInteger := 0;
Open;
End;

Explicacao:
Somente será filtrado todos, se o param TODOS for igual a 1 casos contrário será pequisado somente pelo param. Pcodcli
Veja o ´OR´
T+

ANT.CARLOS


GOSTEI 0
POSTAR