Fechas y monedas (Formatos - Configuración Regional)

12/09/2006 - 20:03 por Julio Briceño | Informe spam
Fechas y monedas (Formatos - Configuración Regional)

Saludos cordiales,

¿Qué estándar se puede utilizar para que una aplicación funcione
independientemente de la configuración regional del cliente y del servidor,
tanto para las fechas-horas y las monedas? Es decir, ¿existe alguna manera de
trabajar una aplicación cliente/servidor Visual Basic.net, ado.net,
SqlServer, en la que no importe la configuración regional ni del servidor ni
de los clientes, que no importe si es MM/DD/YYYY ó DD/MM/YYYY o si tiene
datos para horas DD/MM/YYYY HH:MM:SS para el caso de las fechas o si el
separador de miles es ‘,’ ó ‘.’?

¿Cómo controlo el formato de las variables tipo ‘date’ y las variables
‘Double’ ó ‘Single’ en .net? ¿Cómo debo enviar los inserts sin son en cadenas
desde la aplicación y cómo debo enviarlos si son por procedimientos
almacenados? ¿Cómo hagos los queries basados en fecha? ¿Cómo los hago basados
en monedas y que funcionen independientemente del formato?

Hasta luego y gracias de antemano,

Julio César Briceño R.
C.I. V-13.952.301

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
13/09/2006 - 07:56 | Informe spam
"Julio Briceño" wrote in message
news:
Fechas y monedas (Formatos - Configuración Regional)
¿Cómo controlo el formato de las variables tipo 'date' y las variables
'Double' ó 'Single' en .net?



Todas esas variables siempre guardan los datos en binario, y por tanto
NO TIENEN formato. El formato siempre se aplica en el momento en que las
conviertes desde/hacia un String. Por desgracia, el lenguaje VB es muy
"liberal" en cuanto a conversiones, y a veces las realiza de forma implícita
aunque tú no escribas en tu código la orden de conversión. Es muy
recomendable que pongas en tu programa el Option Strict ON para que el
compilador te avise cuando se produce una conversión de este tipo, y que la
conviertas de implícita en explícita. La ventaja de hacer explícitas las
conversiones es que puedes especificar el formato que quieras y no depender
de la configuración regional del equipo.
Por ejemplo:

Dim fecha as DateTime = DateTime.Now
Dim s as String = fecha

La última linea equivale a Dim s as String=fecha.ToString(). Se produce
una conversión implícita de fecha a string, y se aplica la configuración
regional del equipo (dia/mes/año o mess/dia/año).
Si escribes la conversión explícitamente, puedes forzar el formato que
quieras:

Dim s as String=fecha.ToString("dd/MM/aaaa")


¿Cómo debo enviar los inserts sin son en cadenas
desde la aplicación y cómo debo enviarlos si son por procedimientos
almacenados? ¿Cómo hagos los queries basados en fecha? ¿Cómo los hago
basados
en monedas y que funcionen independientemente del formato?



Lo mejor es que parametrices tus sentencias. De esa forma, siempre
asignas las fechas y números en formato binario al parámetro, y son los
drivers de la base de datos los que pasan el binario al formato adecuado
según lo requiera la base de datos.

Ejemplo:

Dim cmd as New SqlCommand("INSERT INTO TABLA(Fecha) VALUES (@f)",
conexion)
SqlParameter param = New SqlParameter("@f", SqlDbType.DateTime)
param.Value = DateTime.Now 'Fecha asignada en binario; da igual la
configuración regional
cmd.Parameters.Add(param)
cmd.ExecuteNonQuery()

Esta técnica vale tanto para los valores pasados en un insert o update
como para los que pones en un "where". También se usa para los parámetros de
los procedimientos almacenados.
Y, por cierto, también es conveniente usarla con los parámetros de tipo
string. De esa forma funciona el paso de cadenas del tipo "O'Donell", que de
lo contrario fallarían debido a la comilla, y también te evitas la
posibilidad de que se produzcan ataques de inyección de SQL.
Respuesta Responder a este mensaje
#2 Hant
17/09/2006 - 00:48 | Informe spam
Julio Briceño ha escrito:

Fechas y monedas (Formatos - Configuración Regional)

Saludos cordiales,

¿Qué estándar se puede utilizar para que una aplicación funcione
independientemente de la configuración regional del cliente y del servidor,
tanto para las fechas-horas y las monedas? Es decir, ¿existe alguna manera de
trabajar una aplicación cliente/servidor Visual Basic.net, ado.net,
SqlServer, en la que no importe la configuración regional ni del servidor ni
de los clientes, que no importe si es MM/DD/YYYY ó DD/MM/YYYY o si tiene
datos para horas DD/MM/YYYY HH:MM:SS para el caso de las fechas o si el
separador de miles es ',' ó '.'?

¿Cómo controlo el formato de las variables tipo 'date' y las variables
'Double' ó 'Single' en .net? ¿Cómo debo enviar los inserts sin son en cadenas
desde la aplicación y cómo debo enviarlos si son por procedimientos
almacenados? ¿Cómo hagos los queries basados en fecha? ¿Cómo los hago basados
en monedas y que funcionen independientemente del formato?

Hasta luego y gracias de antemano,

Julio César Briceño R.
C.I. V-13.952.301




Porque no estableces la configuración regional en el evento inical de
tu Aplicación Ejm:

Namespace My
Partial Friend Class MyApplication

Private Sub MyApplication_Startup(ByVal sender As Object, _
ByVal e As
Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) _
Handles Me.Startup
System.Threading.Thread.CurrentThread.CurrentCulture = _
New System.Globalization.CultureInfo("es-PE")

End Sub
End Class

End Namespace


En mi caso pondria eso ya que soy de Perú, y despues trabajas
normalmente con los tipos de datos sin necesidad de cambiarlos de
formato, ya que tomarán la Configuración regional especificada en el
evento inicial.
Asi puedes trabajar tus Store procedures como Alberto te lo indica, sin
problemas.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida