Problema com Query e parametros

Delphi

13/06/2008

Bom dia.

Caros, estou tento problemas com parametrosque não são do tipo String em uma determinada Query.

O problema está no momento em que gostaria de atribuir NULL em campos
da minha tabela que não seja String.
Como eu uso esta Query varias vezes dentro de um laço,
se anteriormente o parametro ja teve valor, na proxima
utilização desses parametros eles estarao com o o valor anteriormente passado.

Como fazer para que um campo na tabela do tipo Date por exemplo receba NULL
e não aquela ´data default 1899´.


Obrigado.


Rb2228

Rb2228

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

13/06/2008

tente:
Param.AsVariant := null;


GOSTEI 0
Rb2228

Rb2228

13/06/2008

como usá-lo caro emerson?

fiz mais algumas tentavias com null, porem a data insiste em ficar 30/12/1899

campos do tipo inteiro e float ficam 0.

obrigado...


GOSTEI 0
Edilcimar

Edilcimar

13/06/2008

se vc quiser a data em branco, simplesmente não grave no banco, aí se você for lá e olhar (pode usar um grid para teste), verá que está em branco


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/06/2008

publique o código que você está usando para montar a instrução e passar os parâmetros.


GOSTEI 0
Pestana_

Pestana_

13/06/2008

e assim:
Param.Value := null;

caso não resolva, faça como o nosso amigo Emerson disse poste o código do seu sistema.


flw.


GOSTEI 0
Rb2228

Rb2228

13/06/2008

Pessoal, acredito que meu problema seja simples. Existe uma tabela, CDCLIENTE, por exemplo. Nesta tabela existe um campo CDCLDATACADASTRO. Eu gostaria de setar Null, realmente Null, assim como podemos fazer direto pelo gerenciador ou quando o registro na tabela não possui registro neste campo. Existe um registro: João que foi cadastrado em 01/01/2008, neste momento eu gostaria de setar null a este campo, mas o delphi não o faz. quando retorno ao joão, a data de cadastro dele esta 12/30/1899. (acredito ser o valor default). Como posso resolver o meu problema ? Obrigado.[/img]


GOSTEI 0
Pestana_

Pestana_

13/06/2008

se eu não me engano quando você informa o valor 0 (zero) para este campo então é gravado com o valor default.


flw.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/06/2008

não sei porque você não quis publicar o código, mas vamos lá:
query.sql.text := ´update tabela set campodata = :datainformada where idregistro = :id´;

loop
  query.close;
  query.ParamByName(´data´).DataType := ftDate; // essa linha é muito importante!

  if informou_data then
    query.parambyname(´datainformada´).asDate := data_informada
  else
    query.parambyname(´datainformada´).Value := null

  query.ExecSQL;
fim do loop



GOSTEI 0
Pestana_

Pestana_

13/06/2008

rb2228, quais componentes de acesso a dados você está utilizando?



flw.


GOSTEI 0
Rb2228

Rb2228

13/06/2008

Firebird 1.5, dbexpress...


GOSTEI 0
POSTAR