Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   No me deja asignar null a un campo numérico. (https://www.clubdelphi.com/foros/showthread.php?t=60127)

Angel Fernández 21-09-2008 14:59:54

No me deja asignar null a un campo numérico.
 
Saludos al foro.

Tengo un problemilla con una Bd de Firebird 2.0: tengo un campo declarado como numeric (14,2) con la propiedad not null no activada, y cuando trato de hacer

campo.value:=null

me salta un mensaje de error donde me dice que no puede convertir un dato del tipo variant (null) en double.

En el uses tengo variants y uso D7.

Ahora mismo lo he solucionado dejando sin asignar dicho campo. Por ejemplo, supongamos que en una tabla tengo tres campos: campo, campo1 y campo2 (el que quiero poner a null es campo). Hago lo siguiente:

campo1.value:=xxx
campo2.value:=yyy
db.post;

Esto me deja vacío (sin ningún valor) el campo ¿es esto lo mismo que asignarle null?
Pero aún así, ¿alguna idea de por qué no me deja asignar el valor null?

Gracias.

RolphyReyes 21-09-2008 19:59:27

Saludos.

Prueba a poner:
Código Delphi [-]
TablaCampo1.AsVariant := Null;

Nos avisa como te fue!

RONPABLO 21-09-2008 20:29:06

Cita:

Saludos al foro.

Tengo un problemilla con una Bd de Firebird 2.0: tengo un campo declarado como numeric (14,2) con la propiedad not null no activada, y cuando trato de hacer

campo.value:=null

me salta un mensaje de error donde me dice que no puede convertir un dato del tipo variant (null) en double.

En el uses tengo variants y uso D7.

Ahora mismo lo he solucionado dejando sin asignar dicho campo. Por ejemplo, supongamos que en una tabla tengo tres campos: campo, campo1 y campo2 (el que quiero poner a null es campo). Hago lo siguiente:

campo1.value:=xxx
campo2.value:=yyy
db.post;

Esto me deja vacío (sin ningún valor) el campo ¿es esto lo mismo que asignarle null?
Pero aún así, ¿alguna idea de por qué no me deja asignar el valor null?

Gracias.
Con esa solución podrás tener un problema al momento que asignes un valor a campo3, ya que el próximo que quieras ponerlee el valor null tomará el último valor asignado... para dejar 100% seguro que esta null usa la clear.

Código Delphi [-]
campo1.value:=xxx;
  campo2.value:=yyy;
     campo3.value:=zzz;
   db.post;

campo1.value:=x1xx;
  campo2.value:=y1yy;
     campo3.clear;               //aquí dejas el campo3 con valor null
   db.post;

Angel Fernández 21-09-2008 20:33:28

Funciona
 
Gracias Rolphy, funciona perfectamente.

He descubierto que produce el mismo resultado que dejar el campo sin asignar (lo que hacía yo antes, como indicaba en mi primer comentario).

Un saludo.

Angel Fernández 21-09-2008 20:36:03

Justo cuando puse mi anterior comentario me dí cuenta del hilo de Ronpablo.

Gracias también por tu ayuda. Haciendo caso de lo que dices, usaré lo expuesto por Rolphy que sí que funciona. También funciona lo de campo.clear.
En definitiva, cualquiera de estas dos cosas.

Gracias de nuevo.

Un saludo.


La franja horaria es GMT +2. Ahora son las 06:39:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi