17/02/2010, 21:48
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: Rellenar campos a partir de consulta SQL después de seleccionar en listbox Ese es un problema que confunde mucho a los programadores, pero la cosa es simple:
A nivel de base de datos, siempre se almacenan en el formato YYYY-MM-DD HH:mm:ss, eso es indefectible, y se lo hace por cuestiones de simplicidad de ordenamiento: No importa como lo hagas, el orden siempre será perfecto cuando el año está al principio...
Lo que muchos no saben, es que en realidad ese formato es una interpretación que el DBMS hace del dato guardado como binario. Las fechas y las horas, en realidad se guardan como DOUBLE. Y es un Double con atributo de Date lo que el VB recibe y también interpreta como fecha. Pero en el VB, la representación está determinada por la regionalización de la PC y no por lo que la base supuestamente devuelve.
Estas conversiones son invisibles para el usuario, y además no interesan. Lo que tu tienes que hacer es recordar que estás recibiendo un Date o DateTime y actuar en consecuencia, así como recordar que le debes enviar un DATE (estándar de BBD) o DATETIME o TIME a la base.
El resto es irrelevante.
Ahora bien, lo que sí tienes que tener en cuenta es que debes administrar bien en tu programa la regionalización de la pc (administrada por el Namespace System.Globalization) para evitar problemas de formateo de fecha y de decimales.
Si quieres hacer un experimento para ver cómo es que las fechas son en realidad decimales haz esto:
Abre una hoja de Excel y en una celda cualquiera pon una fecha completa, con hora y todo. Una vez que lo hayas hecho, selecciona la celda y ponle el formato de celda Numero con varios decimales y ¡voilà! Tienes allí el decimal que en realidad representa la fecha...
Cosas escondidas.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |