Problema com Query e parametros

13/06/2008

1

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.


Responder

Posts

tente:
Param.AsVariant := null;


Responder

13/06/2008

Rb2228

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...


Responder

14/06/2008

Edilcimar

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


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


Responder

14/06/2008

Pestana_

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.


Responder

16/06/2008

Rb2228

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]


Responder

17/06/2008

Pestana_

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


flw.


Responder
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



Responder

17/06/2008

Pestana_

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



flw.


Responder

19/06/2008

Rb2228

Firebird 1.5, dbexpress...


Responder