campo inteiro com dbexpress.

Delphi

23/08/2005

Pessoal, com dbexpress n da para passar um valor nulo em um campo inteiro que não é requerido ?

da erro de string, passando o parametro só o campo (nomedocampo.text)

Com o componente do interbase, podia passar assim que o inteiro ficava null o campo.

Obrigado


Lynx

Lynx

Curtidas 0

Respostas

Celamar

Celamar

23/08/2005

Tente assim... pelo menos com data funcionou

 if trim(nomedocampo.text) = ´´ then
    CampoBanco := ´NULL´; //em maiúsculo dependendo do banco 



GOSTEI 0
Lynx

Lynx

23/08/2005

deixei o campo char, passo uma variavel assim.

idcadclientes:= NullasStringValue;

na hora de inserir da pau tbm, com erro de string.


GOSTEI 0
Lynx

Lynx

23/08/2005

não da para passar ´null´.


GOSTEI 0
Celamar

Celamar

23/08/2005

Dessa forma funciona, mais é mais trabalhosa, por exemplo:

 if Trim(idade.txt) = ´´ then
    insert into pessoa (nome) (values ´joazinho´)
 else
    insert into pessoa (nome, idade) (values ´joazinho´, 15);


Assim o campo idade da tabela não será preenchida, automaticamente o banco setará como null


GOSTEI 0
Lynx

Lynx

23/08/2005

gambiarra, deve ter alguma forma, com o componente interbase até um .text setava para Null se estivesse vaziu.

eu passando um nullasstring para uma variavel e o campo com tipo varchar ta dando pau...


GOSTEI 0
Lynx

Lynx

23/08/2005

sinceramente não está dando certo passar um valor nullo, com o dbexpress

tentei assim

variavel:= NullAsStringValue


e no parametro

(´CAMPO´).asString:= variavel;

n da certo, o campo da base é ChaR.


Tentei como Inteiro e passando null tb n da.


GOSTEI 0
Lynx

Lynx

23/08/2005

tentei tb ParamByName(´CAMPO´).Clear

Mas volta um erro (No Value for Parameter ´CAMPO´)


GOSTEI 0
Lynx

Lynx

23/08/2005

resolvido assim:

      if idmotordiesel = NullAsStringValue then
        begin
          ParamByName(´IDMOTORDIESEL´).DataType:= ftInteger;
          ParamByName(´IDMOTORDIESEL´).Value:= null
        end
      else
        ParamByName(´IDMOTORDIESEL´).AsString:= idmotordiesel;


Se alguém souber uma maneira melhor, fique avontade para postar.

Obrigado


GOSTEI 0
POSTAR