Discussion:
fechas en visual basic y access
(demasiado antiguo para responder)
Alber
2005-12-15 06:41:01 UTC
Permalink
Buenos días,
lo de las fechas me trae de cabeza, ya que a veces las fechas las guarda con
el formato dd/mm/yyyy y otras con el formato mm/dd/yyyy.

Agradecería que alguien me indicase como maneja las fechas para evitar estos
problemas.


Gracias a ***@s
Alex Martínez
2005-12-15 07:20:04 UTC
Permalink
Las fechas no se guardan en ninguno de los dos formatos que comentas. Esos
formatos se refieren únicamente a la presentación de los datos (en listados,
formularios, etc.).
Lo que sí ocurre es que debes especificar el formato #mm/dd/yyyy# (o mejor
#yyyy/mm/dd#) en tus sentencias SQL, para que el motor de Access interprete
las fechas de forma correcta.
--
Saludos,
Alex
[MS-MVP Visual Basic]
Post by Alber
Buenos días,
lo de las fechas me trae de cabeza, ya que a veces las fechas las guarda con
el formato dd/mm/yyyy y otras con el formato mm/dd/yyyy.
Agradecería que alguien me indicase como maneja las fechas para evitar estos
problemas.
Sonia
2005-12-15 08:26:06 UTC
Permalink
yo tb tenia problema con las fechas. las guardo en formato mm/dd/yyyy y
siempre se guardan bien pero cuando voy a consultar algo sobre una
determinada fecha en vb si pongo 02/12/2005 se me muestra lo correspondiente
a la fecha 12/02/2005 es decir sale como si estuviera el formato en
mm/dd/yyyy
pero eso solo me pasa de el dia 01 al dia 09 de cada mes.

la unica solucion q pude tomar es q cuando se consulta en el programa una de
esas fechas, donde el dia va del 01 al 09 pues lo trasformo de formato para
q se vea la misma fecha
la otra solucion q puse en varios forms es almacenarlo como texto

ya se q no son buenas soluciones pero lo de acces con las fechas si kieres
el formato español de toda la vida....todo son complicaciones, al no ser q
cambies al formato americano.

si encuentras algo mejor.....
Post by Alber
Buenos días,
lo de las fechas me trae de cabeza, ya que a veces las fechas las guarda con
el formato dd/mm/yyyy y otras con el formato mm/dd/yyyy.
Agradecería que alguien me indicase como maneja las fechas para evitar estos
problemas.
Alex Martínez
2005-12-15 08:59:47 UTC
Permalink
Las fechas se MUESTRAN de acuerdo a la configuración regional y en la base
de datos se guardan como un número (no como una fecha). En el momento de
ponerlas en una *sentencia SQL*, para Access, deberás ponerlas en formato
#mm/dd/yyyy# o #yyyy/mm/dd#. Y se acabaron los problemas con las fechas.
--
Saludos,
Alex
[MS-MVP Visual Basic]
Post by Sonia
yo tb tenia problema con las fechas. las guardo en formato mm/dd/yyyy y
siempre se guardan bien pero cuando voy a consultar algo sobre una
determinada fecha en vb si pongo 02/12/2005 se me muestra lo
correspondiente
a la fecha 12/02/2005 es decir sale como si estuviera el formato en
mm/dd/yyyy
pero eso solo me pasa de el dia 01 al dia 09 de cada mes.
la unica solucion q pude tomar es q cuando se consulta en el programa una de
esas fechas, donde el dia va del 01 al 09 pues lo trasformo de formato para
q se vea la misma fecha
la otra solucion q puse en varios forms es almacenarlo como texto
ya se q no son buenas soluciones pero lo de acces con las fechas si kieres
el formato español de toda la vida....todo son complicaciones, al no ser q
cambies al formato americano.
si encuentras algo mejor.....
Post by Alber
Buenos días,
lo de las fechas me trae de cabeza, ya que a veces las fechas las guarda
con
Post by Alber
el formato dd/mm/yyyy y otras con el formato mm/dd/yyyy.
Agradecería que alguien me indicase como maneja las fechas para evitar
estos
Post by Alber
problemas.
Sonia
2005-12-15 09:54:36 UTC
Permalink
ya se q cambiandolo de formato sale bien.
pero las operadoras de la aplicacion buscan la fecha con el formato normal y
seria mucho lio q a partir de ahora lo hicieran poniendo el año delante
Post by Alex Martínez
Las fechas se MUESTRAN de acuerdo a la configuración regional y en la base
de datos se guardan como un número (no como una fecha). En el momento de
ponerlas en una *sentencia SQL*, para Access, deberás ponerlas en formato
#mm/dd/yyyy# o #yyyy/mm/dd#. Y se acabaron los problemas con las fechas.
--
Saludos,
Alex
[MS-MVP Visual Basic]
Post by Sonia
yo tb tenia problema con las fechas. las guardo en formato mm/dd/yyyy y
siempre se guardan bien pero cuando voy a consultar algo sobre una
determinada fecha en vb si pongo 02/12/2005 se me muestra lo
correspondiente
a la fecha 12/02/2005 es decir sale como si estuviera el formato en
mm/dd/yyyy
pero eso solo me pasa de el dia 01 al dia 09 de cada mes.
la unica solucion q pude tomar es q cuando se consulta en el programa
una
Post by Alex Martínez
Post by Sonia
de
esas fechas, donde el dia va del 01 al 09 pues lo trasformo de formato para
q se vea la misma fecha
la otra solucion q puse en varios forms es almacenarlo como texto
ya se q no son buenas soluciones pero lo de acces con las fechas si kieres
el formato español de toda la vida....todo son complicaciones, al no ser q
cambies al formato americano.
si encuentras algo mejor.....
Post by Alber
Buenos días,
lo de las fechas me trae de cabeza, ya que a veces las fechas las guarda
con
Post by Alber
el formato dd/mm/yyyy y otras con el formato mm/dd/yyyy.
Agradecería que alguien me indicase como maneja las fechas para evitar
estos
Post by Alber
problemas.
Rubén Vigón
2005-12-15 09:57:14 UTC
Permalink
No son ellas sino tú quien tiene que usar ese formato. Ellas no ejecutan ningún INSERT INTO en la base de datos, es tu código fuente quien lo hace

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Sonia
2005-12-15 11:06:34 UTC
Permalink
ya
pero en mi codigo fuente pongo el formato dd/mm/aaaa
y si q se guardan en ese formato
pero a la hora de consultar, en mi aplicacion, tb consulto poniendo la fecha
en el mismo formato:
dd/mm/aaaa

y salen todas correctas menos cuando el dd va del 01 al 09 q es entonces
cuando salen en formato mm/dd/aaaa
y en mi codigo fuente no pongo nada especial para los dias de 01 al 06


"Rub�n Vig�n" <***@QUITAESTOwanadoo.es> escribi� en el mensaje news:#***@TK2MSFTNGP10.phx.gbl...
No son ellas sino tú quien tiene que usar ese formato. Ellas no ejecutan
ningún INSERT INTO en la base de datos, es tu código fuente quien lo hace

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Rubén Vigón
2005-12-15 11:14:56 UTC
Permalink
Pues haz lo que recomiendo y nunca más volverás a tener el más mínimo problema

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
PilarMMF
2005-12-15 13:05:53 UTC
Permalink
Post by Rubén Vigón
Pues haz lo que recomiendo y nunca más volverás a tener el más mínimo problema
¡Qué gente tan insensible!
Post by Rubén Vigón
Las bases de datos no guardan las fechas con ningún formato.
... la hora se guarda como el número de latidos (ticks) de
reloj posteriores a medianoche, ...
--
Besos.
Pilar.

m a r t i n _ p i l arroba g v a punto e s

Muchas personas pierden pequeñas alegrías,
esperando la gran felicidad (Pearl S. Buck)
Alex Martínez
2005-12-15 13:12:07 UTC
Permalink
¡Pilar!
¡Qué alegría volver a leerte!

Un besazo
Lluís Franco
2005-12-15 14:36:42 UTC
Permalink
:-)
Hola Pilarica!!!
¡Que bueno leerte de nuevo por aquí!

Un abrazo desde Andorra,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]

This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho

--
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm=10
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile=02aa1615-1a2f-4202-bc3f-aec297d967d2
Rubén Vigón
2005-12-15 14:44:25 UTC
Permalink
¡¡Pilar!! ¡¡Bienvenida de nuevo!!

Un saludo desde Asturias,

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Juan Valdés
2005-12-15 16:24:51 UTC
Permalink
Qué bueno que andes x acá de nuevo!
Post by PilarMMF
Post by Rubén Vigón
Pues haz lo que recomiendo y nunca más volverás a tener el más mínimo problema
¡Qué gente tan insensible!
Post by Rubén Vigón
Las bases de datos no guardan las fechas con ningún formato.
... la hora se guarda como el número de latidos (ticks) de
reloj posteriores a medianoche, ...
--
Besos.
Pilar.
m a r t i n _ p i l arroba g v a punto e s
Muchas personas pierden pequeñas alegrías,
esperando la gran felicidad (Pearl S. Buck)
Alex Martínez
2005-12-15 11:15:33 UTC
Permalink
Sonia, respira hondo, toma una tila, vuelve a leer las respuestas que te
hemos dado, piensa un poco en lo que dicen esas respuestas.... y luego nos
cuentas.
--
Saludos,
Alex
[MS-MVP Visual Basic]
Post by Sonia
ya
pero en mi codigo fuente pongo el formato dd/mm/aaaa
y si q se guardan en ese formato
pero a la hora de consultar, en mi aplicacion, tb consulto poniendo la fecha
dd/mm/aaaa
y salen todas correctas menos cuando el dd va del 01 al 09 q es entonces
cuando salen en formato mm/dd/aaaa
y en mi codigo fuente no pongo nada especial para los dias de 01 al 06
No son ellas sino tú quien tiene que usar ese formato. Ellas no ejecutan
ningún INSERT INTO en la base de datos, es tu código fuente quien lo hace
Un saludo!
Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
unknown
2005-12-15 14:15:19 UTC
Permalink
Entonces captura la fecha como quieras, pero guardala usando
"#" & Format(varfecha,"mm/dd/yyyy") & "#"
Post by Sonia
ya
pero en mi codigo fuente pongo el formato dd/mm/aaaa
y si q se guardan en ese formato
pero a la hora de consultar, en mi aplicacion, tb consulto poniendo la fecha
dd/mm/aaaa
y salen todas correctas menos cuando el dd va del 01 al 09 q es entonces
cuando salen en formato mm/dd/aaaa
y en mi codigo fuente no pongo nada especial para los dias de 01 al 06
No son ellas sino tú quien tiene que usar ese formato. Ellas no ejecutan
ningún INSERT INTO en la base de datos, es tu código fuente quien lo hace
Un saludo!
Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Rubén Vigón
2005-12-15 09:40:29 UTC
Permalink
Éste es una de las cuestiones más recurrentes de este foro (y de muchos otros). A ver si soy capaz de aclararlo de una vez por todas...

Las bases de datos no guardan las fechas con ningún formato. Son las aplicaciones que muestran las fechas almacenadas en la base de datos las que las presentan con algún formato (generalmente, con el formato de fecha/hora de la configuración regional del sistema).

Volveré a decirlo: las bases de datos NO GUARDAN LAS FECHAS CON NINGÚN FORMATO. Las bases de datos almacenan las fechas como números de coma flotante (generalmente, como «Double» de 8 bytes) donde la parte entera significa los días transcurridos desde una fecha "base" y la parte decimal significa los segundos o milisegundos transcurridos desde la medianoche.

Por ejemplo, en SQL Server las fechas se guardan como dos componentes independientes, un componente de fecha y un componente de hora. La fecha se guarda como el número de días anteriores o posteriores a la fecha base del 1 de Enero de 1900. Para los valores de tipo «datetime», la hora se guarda como el número de latidos (ticks) de reloj posteriores a medianoche, donde cada latido representa 3,33 milisegundos, o 1/300 de segundo. Para valores de tipo «smalldatetime», la hora se guarda como el número de minutos posteriores a medianoche.

Para evitar problemas al introducir, modificar o recuperar fechas de la base de datos (mediante sentencias SELECT, UPDATE ó INSERT INTO) sólo hay que usar el formato ISO: 4 dígitos para el año, 2 dígitos para el mes y 2 dígitos para el día (yyyymmdd). Este formato es completamente inequívoco y siempre reconocible por el motor de la base de datos, independientemente de la configuración regional del sistema y del servidor donde reside la base de datos.

Por ejemplo, para Access:

SELECT * FROM Empleados WHERE FechaNacimiento = #2005/12/31#

UPDATE Empleados SET FechaNacimiento = #2005/12/31# WHERE IdEmpleado = 4

INSERT INTO Empleados (Nombre, FechaNacimiento) VALUES ('Pedro García', #2005/12/31#)

Y para SQL Server:

SELECT * FROM Empleados WHERE FechaNacimiento = '20051231'

UPDATE Empleados SET FechaNacimiento = '20051231' WHERE IdEmpleado = 4

INSERT INTO Empleados (Nombre, FechaNacimiento) VALUES ('Pedro García', '20051231')

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Rubén Vigón
2005-12-15 10:00:30 UTC
Permalink
Se me olvidaba: para convertir una fecha a una cadena de texto con el formato ISO (para usar en tus sentencias SQL) puedes usar la función «Format»; por ejemplo:

Dim fchNacimiento As Date
fchNacimiento = DateSerial(2005, 12, 31)
Debug.Print Format(fchNacimiento, "yyyymmdd")

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
JESUS
2005-12-19 20:20:41 UTC
Permalink
Como dicen, puedes almacenar los datos como YYYYMMDD, asi cuando se aplique
un orden o hagas una consulta, tambien la haras del mismo modo y todo bien,
ahora cuando recuperes el dato, crea una funcion que le de formato en tu
formulario y cuando guardes, lo vuelves al formato inicial, te explico, en
nuestro sistema guardamos un campo char(08) que almacena digamos 20051215,
sera 15 de diciembre del 2005, y todo bien, no hemos tenido problemas,
pongas el idioma que pongas, funciona, y cuando quieras verlo en crystal,
pones un formato adecuado en tu select y todos felices.
Alex Martínez
2005-12-20 07:31:45 UTC
Permalink
Rubén no está diciendo eso.
Rubén no propone guardar las fechas como cadenas, sino guardarlas como
fechas y ajustarlas al formato YYYYMMDD en el momento de construir las
sentencias SQL (INSERT, UPDATE, DELETE, SELECT).
Es mejor usar los tipos de datos adecuados (si existe un tipo de datos para
las fechas, ¿por qué usar cadenas?).
Tratando las fechas de manera "correcta", no dan ningún problema.
--
Saludos,
Alex
[MS-MVP Visual Basic]
Post by JESUS
Como dicen, puedes almacenar los datos como YYYYMMDD, asi cuando se aplique
un orden o hagas una consulta, tambien la haras del mismo modo y todo bien,
ahora cuando recuperes el dato, crea una funcion que le de formato en tu
formulario y cuando guardes, lo vuelves al formato inicial, te explico, en
nuestro sistema guardamos un campo char(08) que almacena digamos 20051215,
sera 15 de diciembre del 2005, y todo bien, no hemos tenido problemas,
pongas el idioma que pongas, funciona, y cuando quieras verlo en crystal,
pones un formato adecuado en tu select y todos felices.
Lluís Franco
2005-12-15 10:29:18 UTC
Permalink
:-)))
Uhm...vale. Ahora lo tengo más claro!
Pero... ¿con que formato se guardan las fechas?

Saludos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]

This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho

--
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm=10
FIMARGE, S.A.
Principat d'Andorra
***@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profile=02aa1615-1a2f-4202-bc3f-aec297d967d2
Alber
2005-12-15 10:55:02 UTC
Permalink
Ahora lo tengo claro,

Gracias por contestar
Post by Lluís Franco
:-)))
Uhm...vale. Ahora lo tengo más claro!
Pero... ¿con que formato se guardan las fechas?
Saludos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho
--
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm=10
FIMARGE, S.A.
Principat d'Andorra
Tel.: +376 805 100
Fax: +376 824 500
https://mvp.support.microsoft.com/profile=02aa1615-1a2f-4202-bc3f-aec297d967d2
j***@gmail.com
2005-12-15 12:09:39 UTC
Permalink
Hola

Lo que debes hacer es lo siguiente

Siempre debes pasar las fechas a access en formato mm/dd/yyyy

supongamos que quieres hacer un update en un campo fecha la cadena con
el sql desde vb debe sert

sCadena="UPDATE tblTabla SET dCampoFecha=#" vba.Format$(dVarFecha,
"mm/dd/yyyy") & "#"

Espero que te ayude...
Continúe leyendo en narkive:
Loading...