Foros del Web » Programación para mayores de 30 ;) » .NET »

Formateo de Numeros

Estas en el tema de Formateo de Numeros en el foro de .NET en Foros del Web. Hola, Estoi intentando formatear el valor que me devuelve un campo con: FormatNumber(campo,2) Funciona bien hasta que el campo esta vacio, entonces me da el ...
  #1 (permalink)  
Antiguo 25/01/2005, 18:06
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 23 años, 2 meses
Puntos: 0
Formateo de Numeros

Hola,

Estoi intentando formatear el valor que me devuelve un campo con:

FormatNumber(campo,2)

Funciona bien hasta que el campo esta vacio, entonces me da el error:


La conversión del tipo 'DBNull' al tipo 'Currency' no es válida

Llevo probando dos horas.. ¿Sabeis como puedo solucionarlo?

Saludos
  #2 (permalink)  
Antiguo 26/01/2005, 07:53
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 20 años, 3 meses
Puntos: 0
por q no haces la conversion solo cuando el campo es <> ""? y si es "" pues asignas a una variable Cero(0)
  #3 (permalink)  
Antiguo 26/01/2005, 09:03
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 20 años, 1 mes
Puntos: 7
Lo que dice Rony J. lo puedes hacer desde la consulta SQL, no sé de que tipo sean el campo numérico pero podrías probar (válido para SQL Server):

select cast(isnull(campo,0) as float) as campo_numero
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 27/01/2005, 08:35
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 23 años, 2 meses
Puntos: 0
Estoy haciendo asi:

<asp:Label id="lbprecio" runat="server" text='<%#Formatea_Numero(Container.DataItem("preci oVenta"))%>'></asp:Label>


yla funcion esta:

Protected Function Formatea_Numero(precio As Integer)
Dim numero

If precio <> false Then
numero = CDbl(FormatNumber(precio,2))
Else
Numero = CStr("Consultar")

End If

Return Numero
End Function


si pongo
If precio = "" Then ......


me da el error:
la cadena no tiene el formato correcto , (he probado con false ).

En cuanto a lo que dice xknown, es una base de datos Access, y estoy utilizando un storeProcedure para recupererar los datos.

mas sugerencias ?

Saludos

  #5 (permalink)  
Antiguo 27/01/2005, 09:38
Avatar de Rony J.  
Fecha de Ingreso: noviembre-2004
Ubicación: Maracay - Vzla
Mensajes: 223
Antigüedad: 20 años, 3 meses
Puntos: 0
no probaste algo asi:

If Not precio is Nothing Then
numero = CDbl(FormatNumber(precio,2))
Else
Numero = CStr("Consultar")
End If
  #6 (permalink)  
Antiguo 27/01/2005, 09:53
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 23 años, 2 meses
Puntos: 0
Asi obtengo el error:

'Is' requiere operandos que tienen tipos de referencia, pero este operando tiene el tipo de valor 'Integer'.

  #7 (permalink)  
Antiguo 27/01/2005, 10:57
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 23 años
Puntos: 50
Coincido mas o menos como lo plantea xknown

Si estas usando SQL Server puedes hacer ésto en tu query donde te traes tus valores.

Ejemplo.


Cita:
SELECT ...,COALESCE(precioVenta,0) AS PrecioVenta
FROM TABLA
Con ello estás indicando que si es nulo ponga un 0, y ya por código puedes hacer tu comparacion con el 0.

Y sería:

Cita:
Protected Function Formatea_Numero(precio As Integer)
Dim numero

If precio <> 0 Then
numero = CDbl(FormatNumber(precio,2))
Else
Numero = CStr("Consultar")

End If

Return Numero
End Function

Claro que si estas ocupando tambien el cero lo puedes validar por ejemplo trambien con un -1, o algo por el estilo.

Espero que te funcione..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #8 (permalink)  
Antiguo 27/01/2005, 11:49
Avatar de jose_d  
Fecha de Ingreso: enero-2003
Ubicación: Cali
Mensajes: 220
Antigüedad: 22 años
Puntos: 4
Hola gente no hay manera con el tostring("Formato") la verdad es que yo estoy tratando de hacer lo mismo pero no me da necesito pasar un valor int a currency.
__________________
El leer te da el poder de mejorar
  #9 (permalink)  
Antiguo 07/02/2005, 16:27
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 23 años, 2 meses
Puntos: 0
Buenas de nuevo.

He conseguido solucionarlo con el siguiente..

If precio is DbNull.value Then
precio=0
Numero = CStr("Consultar")
else
precio = cInt(precio)
numero = FormatNumber(precio,2)
End If

Return Numero

Pos si le sirve a alguien.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:57.