Problema con Compute

10/12/2008 - 17:37 por Juan Carlos Flores | Informe spam
Esta linea me devuelve un error de conversion de valor nulo cuando no hay
resultado.

nSaldoAnt=Convert.ToDecimal(dSfrmEdores.v_resmescierre.Compute("sum(saldolps)",
"Anio 08 and Mes=4 and tipo='INICIAL'"));

Eso es porque no hay datos para hacer la suma.

Como puedo controlar ese error ? Quisiera que nSaldoAnt fuera 0 (cero), si
no hay nada que sumar.

Saludos

Juan Carlos Flores

Preguntas similare

Leer las respuestas

#1 Jose TH
10/12/2008 - 18:07 | Informe spam
Compara primero el resultado con null o usa el operador "??" con cero.


"Juan Carlos Flores" escribió en el mensaje
news:
Esta linea me devuelve un error de conversion de valor nulo cuando no hay
resultado.

nSaldoAnt=Convert.ToDecimal(dSfrmEdores.v_resmescierre.Compute("sum(saldolps)",
"Anio 08 and Mes=4 and tipo='INICIAL'"));

Eso es porque no hay datos para hacer la suma.

Como puedo controlar ese error ? Quisiera que nSaldoAnt fuera 0 (cero), si
no hay nada que sumar.

Saludos

Juan Carlos Flores
Respuesta Responder a este mensaje
#2 Juan Carlos Flores
10/12/2008 - 22:00 | Informe spam
Será que tengo que ejecutar 2 veces la suma ?
Una para evaluar y la otra para tomar el valor ?

Justamente eso es lo que quiero evitar o el uso de un try catch, no habra
una manera como el IsNull(TalCOSA, 0) ??

Saludos

Juan Carlos Flores


"Jose TH >>" escribió en el mensaje de noticias
news:
Compara primero el resultado con null o usa el operador "??" con cero.


"Juan Carlos Flores" escribió en el mensaje
news:
Esta linea me devuelve un error de conversion de valor nulo cuando no hay
resultado.

nSaldoAnt=Convert.ToDecimal(dSfrmEdores.v_resmescierre.Compute("sum(saldolps)",
"Anio 08 and Mes=4 and tipo='INICIAL'"));

Eso es porque no hay datos para hacer la suma.

Como puedo controlar ese error ? Quisiera que nSaldoAnt fuera 0 (cero),
si no hay nada que sumar.

Saludos

Juan Carlos Flores




Respuesta Responder a este mensaje
#3 Alberto Poblacion
10/12/2008 - 22:24 | Informe spam
"Juan Carlos Flores" wrote in message
news:
Será que tengo que ejecutar 2 veces la suma ?
Una para evaluar y la otra para tomar el valor ?

Justamente eso es lo que quiero evitar o el uso de un try catch, no habra
una manera como el IsNull(TalCOSA, 0) ??



Sí, es el operador "??" (dos interrogaciones). Por ejemplo:

string variable = null;
...
string resultado = variable ?? "0";

Si variable es distinto de null, se copia a resultado; sino, resultado
vale "0".

OJO, que tiene que ser un "null" de C#, no vale el operador "??" para el
"DBNull.Value" al que se traduce un "NULL" de base de datos. Para esto se
podría usar el operador "as" combinado con el "??":

object variable = DBNull.Value;
...
string resultado = variable as string ?? "0";

Nota: El "as" solo vale para datos tipo-referencia, no vale para datos
tipo-valor (como el int), que nunca pueden ser null. Si necesitas meter
nulls en un tipo-valor, usa un Nullable<tipo>, que en C# se puede abreviar a
"tipo?" (por ejemplo, int?).
Respuesta Responder a este mensaje
#4 Juan Carlos Flores
10/12/2008 - 22:46 | Informe spam
Excelente, ya implementando.

Gracias y Saludos.


Juan Carlos Flores


"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"Juan Carlos Flores" wrote in message
news:
Será que tengo que ejecutar 2 veces la suma ?
Una para evaluar y la otra para tomar el valor ?

Justamente eso es lo que quiero evitar o el uso de un try catch, no habra
una manera como el IsNull(TalCOSA, 0) ??



Sí, es el operador "??" (dos interrogaciones). Por ejemplo:

string variable = null;
...
string resultado = variable ?? "0";

Si variable es distinto de null, se copia a resultado; sino, resultado
vale "0".

OJO, que tiene que ser un "null" de C#, no vale el operador "??" para el
"DBNull.Value" al que se traduce un "NULL" de base de datos. Para esto se
podría usar el operador "as" combinado con el "??":

object variable = DBNull.Value;
...
string resultado = variable as string ?? "0";

Nota: El "as" solo vale para datos tipo-referencia, no vale para datos
tipo-valor (como el int), que nunca pueden ser null. Si necesitas meter
nulls en un tipo-valor, usa un Nullable<tipo>, que en C# se puede abreviar
a "tipo?" (por ejemplo, int?).


Respuesta Responder a este mensaje
#5 Jose TH
12/12/2008 - 01:53 | Informe spam
Muy buena la explicación.



"Alberto Poblacion"
escribió en el mensaje news:
"Juan Carlos Flores" wrote in message
news:
Será que tengo que ejecutar 2 veces la suma ?
Una para evaluar y la otra para tomar el valor ?

Justamente eso es lo que quiero evitar o el uso de un try catch, no habra
una manera como el IsNull(TalCOSA, 0) ??



Sí, es el operador "??" (dos interrogaciones). Por ejemplo:

string variable = null;
...
string resultado = variable ?? "0";

Si variable es distinto de null, se copia a resultado; sino, resultado
vale "0".

OJO, que tiene que ser un "null" de C#, no vale el operador "??" para el
"DBNull.Value" al que se traduce un "NULL" de base de datos. Para esto se
podría usar el operador "as" combinado con el "??":

object variable = DBNull.Value;
...
string resultado = variable as string ?? "0";

Nota: El "as" solo vale para datos tipo-referencia, no vale para datos
tipo-valor (como el int), que nunca pueden ser null. Si necesitas meter
nulls en un tipo-valor, usa un Nullable<tipo>, que en C# se puede abreviar
a "tipo?" (por ejemplo, int?).


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