PDA

Ver la Versión Completa : .IsNull no me funciona


bgespada
12-09-2011, 19:49:13
Hola

No soy un experto en delphi 7 y me encuentro con un problema.

Intento utilizar:

if not DBgenvlg.FieldByName(genvlgNomRobot).IsNull then

para ver si el registro es NULL de un objeto TTable y siempre me da false sea o no un valor NULL.

Consulta completa:
if not DBgenvlg.FieldByName(genvlgNomRobot).IsNull then
sNomRob := DBgenvlg.FieldByName(genvlgNomRobot).Value //Nombre
else
sNomRob := 'error'; //Nombre

¿Que estoy haciendo mal?
Llevo peleándome unas horas y buscando información, pero no tengo éxito.
Si alguien puede echarme un cable, muchas gracias.

ecfisa
12-09-2011, 20:19:17
Hola y bienvenido a los foros de Club Delphi :)

Si no cometiste omisión de caracteres al escribir, el problema es la sintáxis.

Debería ser:

if not DBgenvlg.FieldByName('genvlgNomRobot').IsNull then

Es decir que el nombre de campo va entre ' '.
Lo extraño es... ¿ Tenés además alguna variable llamada genvlgNomRobot ? y si el nombre del campo lo envias como valor de una variable ¿ Está correctamente asignado ?

Saludos.

bgespada
13-09-2011, 07:06:54
Gracias

Las comillas no son necesarias ya que es una variable que contiene el nombre del campo en string.

Creo que el problema es que la base de datos (que me han suministrado) no permite campos null. Al menos es de lo último que he leído por la web y es una vía para seguir buscando el problema.

Gracias de nuevo

bgespada
13-09-2011, 09:00:21
Hola de nuevo.

He conseguido solucionar el problema de la siguiente manera:

1º Añadiendo la unit Variants y

2º con la siguiente condición:
if DBgenvlg.FieldValues[genvlgNomRobot] <> null then
sNomRob := DBgenvlg.FieldByName(genvlgNomRobot).Value //Nombre
else
sNomRob := 'error'; //Nombre

Funciona!
¿Es igualmente correcto que utilizar .IsNull?

ecfisa
13-09-2011, 13:12:48
¿Es igualmente correcto que utilizar .IsNull?
Hola.

Si, por que la comprobación ( if DBgenvlg.FieldValues[genvlgNomRobot] = null ) tiene el mismo efecto que IsNull.

Saludos.