Como passar um valor nulo para um parametro de uma SQL
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
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
Curtidas 0
Respostas
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.
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
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
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
25/06/2005
Caramba,
Eis a dúvida das dúvidas...
Cara, fiz uns testes aqui e tb não consegui. Doidera né?
Eis a dúvida das dúvidas...
Cara, fiz uns testes aqui e tb não consegui. Doidera né?
GOSTEI 0
Bon Jovi
25/06/2005
tenta assim:
SQLDataSet1.ParamByName(´xx´).Clear;
ou:
SQLDataSet1.ParamByName(´xx´).Value := null;
SQLDataSet1.ParamByName(´xx´).Clear;
ou:
SQLDataSet1.ParamByName(´xx´).Value := null;
GOSTEI 0
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...
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
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
25/06/2005
Foi mal, só tinha visto a questao relacionada a como atribuir null no parametro.
GOSTEI 0
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
[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