Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/06/2010, 16:52
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: VB problema al guardar un MEDIUMTEXT en un dataset desde MySQL

Necesitas:
1) El Namespace System.Globalization
Código vb.net:
Ver original
  1. Imports System.Globalization
2) Crear un objeto de la clase System.Globalization.CultureInfo.NumberFormatInfo. Es preferible crearlo en el módulo como Friend para poder usarlo en cualquier parte:
Código vb.net:
Ver original
  1. Friend nFI As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat
3) Usar ese objeto cuando conviertes un valor de punto flotante a string:
Código vb.net:
Ver original
  1. Dim oVarDouble as string = oDato.ToString("f", nfi)
En este ejemplo, oDato es una variable de tipo Double, que puede contener cualquier tipo de valor.

El problema surge cuando la region declarada en el sistema es de tipo "es-XX", donde "XX" en el sufijo de cualquier país de habla española.
Esto hace que cualquier conversión de Double a String use los símbolos regionales de decimal y de grupos de miles. Como en Español estos son, respectivamente, la coma y el punto, hay que usar alguna de las regionalizaciones de inglés. De allí que use "en-US", o sea, Inglés - Estados Unidos.
A su vez, si el dato está viniendo de la base, por ejemplo, en su formato natural (como DECIMAL, FLOAT, DOUBLE o lo que sea), para que puedas representarlo con coma en lugar de punto decimal, debes usar un objeto de regionalización en español, por ejemplo:
Código vb.net:
Ver original
  1. Friend oEsI As NumberFormatInfo = New CultureInfo("es-MX", False).NumberFormat
Este caso es Español - México.

Nunca debes dejar que la representación y las conversiones estén en manos del sistema, porque tendrás problemas de portabilidad entre diferentes PCs. Piensa que la mayoría de la gente ni siquiera mira qué región tienen declarada en el formato de fechas y números... (la vagancia es universal)
Cuando dejas que el sistema regule todo, o tienes problemas con los usuarios, que no comprenden lo que se les presenta en la pantalla, o tienes errores de Excepciones no controladas, por defectos de conversión... Y eso nunca debe suceder.
No te olvides que los clientes no quieren explicaciones, quieren que las cosas funcionen bien.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)