funcion iif

15/06/2006 - 19:48 por Jose | Informe spam
Porque al ejecutar esta sentencia cuan do el valor es nulo da un error de
que dbnull.value no puede convertirse en string

IIf(lector.Item("codigo") Is DBNull.Value, " ", IIf(lector.Item("codigo") =
"01", "X", " "))

Quiero que si es nulo pues grabe " "



Alguna sugerencia?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
15/06/2006 - 21:39 | Informe spam
"Jose" wrote in message
news:
Porque al ejecutar esta sentencia cuan do el valor es nulo da un error de
que dbnull.value no puede convertirse en string

IIf(lector.Item("codigo") Is DBNull.Value, " ", IIf(lector.Item("codigo")
= "01", "X", " "))



Cuando se ejecuta el IIf, lo mismo que cualquier otra función, primero se
evalúan todos los argumentos, y luego se le pasan a la función para que ésta
los procese. Cuando una de las funciones a evaluar puede dar error
dependiendo de que la condición se cumpla o no, no hay más remedio que
utilizar una sentencia If en lugar de la función IIf.
Respuesta Responder a este mensaje
#2 Jose
15/06/2006 - 21:59 | Informe spam
Aja Alberto pero que hay de malo en mi sentencia. Creo que es lo mas basica
posible. No veo porque da el error

"Alberto Poblacion"
escribió en el mensaje news:
"Jose" wrote in message
news:
Porque al ejecutar esta sentencia cuan do el valor es nulo da un error de
que dbnull.value no puede convertirse en string

IIf(lector.Item("codigo") Is DBNull.Value, " ", IIf(lector.Item("codigo")
= "01", "X", " "))



Cuando se ejecuta el IIf, lo mismo que cualquier otra función, primero
se evalúan todos los argumentos, y luego se le pasan a la función para que
ésta los procese. Cuando una de las funciones a evaluar puede dar error
dependiendo de que la condición se cumpla o no, no hay más remedio que
utilizar una sentencia If en lugar de la función IIf.


Respuesta Responder a este mensaje
#3 Alberto Poblacion
15/06/2006 - 22:54 | Informe spam
"Jose" wrote in message
news:
Aja Alberto pero que hay de malo en mi sentencia. Creo que es lo mas
basica posible. No veo porque da el error



Da un error porque haces a la vez dos cosas: Una correcta y otra
incorrecta. Y aunque el resultado de la incorrecta se descarta porque no se
cumple la condición que permite devolverlo, el mero hecho de ejecutar la
sentencia incorrecta ya hace que falle el programa, aunque luego no utilices
dicho resultado incorrecto.

Concretamente, lo que haces mal es lector.Item("Codigo")="01". Cuando
Lector.Item("Codigo") vale DBNull.Value, no es lícito compararlo con el
string "01" y ahi es donde "casca". Tu error está en que piensas que no va
a entrar en esa instrucción porque no lo permite la condición que has puesto
en el primer IIf, pero no es asi como funciona el IIf.
Respuesta Responder a este mensaje
#4 Jose
16/06/2006 - 01:34 | Informe spam
Ok gracias Alberto.
"Alberto Poblacion"
escribió en el mensaje news:
"Jose" wrote in message
news:
Aja Alberto pero que hay de malo en mi sentencia. Creo que es lo mas
basica posible. No veo porque da el error



Da un error porque haces a la vez dos cosas: Una correcta y otra
incorrecta. Y aunque el resultado de la incorrecta se descarta porque no
se cumple la condición que permite devolverlo, el mero hecho de ejecutar
la sentencia incorrecta ya hace que falle el programa, aunque luego no
utilices dicho resultado incorrecto.

Concretamente, lo que haces mal es lector.Item("Codigo")="01". Cuando
Lector.Item("Codigo") vale DBNull.Value, no es lícito compararlo con el
string "01" y ahi es donde "casca". Tu error está en que piensas que no
va a entrar en esa instrucción porque no lo permite la condición que has
puesto en el primer IIf, pero no es asi como funciona el IIf.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida