Poner formato correcto a expresión fecha

Con el código que me paso ayer Sveinbjorn El Rojo para realizar un INSERT INTO a una tabla histórico, que es este:

Private Sub Imagen113_Click()
Dim respuesta As String
Dim cSql As String
Dim vFecha As Variant
respuesta = MsgBox("ELIMINARÁ EL REGISTRO ACTUAL,¿DESEA CONTINUAR?", vbYesNo, "CONFIRMAR")
If respuesta = 6 Then
vFecha = InputBox("Introduzca la fecha de Baja")
If StrPtr(vFecha) = 0 Then 'Se pulsó Cancelar
MsgBox "Proceso cancelado por el usuario"
Exit Sub
End If
If IsNumeric(vFecha) Then  'Se ha escrito un número
MsgBox "Tienes que introducir una fecha con formato dd/mm/aaaa"
Exit Sub
End If
If Not IsDate(vFecha) Then  'No es una fecha
MsgBox "Tienes que introducir una fecha con formato dd/mm/aaaa"
Exit Sub
End If
DoCmd.RunSQL "INSERT INTO EquiposBaja (Modelo, EquipoSerialNumber,Observaciones,FechaBaja) VALUES ('" & Modelo.Value & "', '" & EquipoSerialNumber.Value & "', '" & Observaciones.Value & "',#" & Format(vFecha, "dd/mm/yyyy") & "#)"
MsgBox ("LA FICHA ELIMINADA PASARÁ AL REGISTRO HISTÓRICO"), vbInformation, "PASO DE DATOS A HISTÓRICO COMPLETADO"
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.Close acForm, "Equipos", acSaveYes
DoCmd.OpenForm "EquiposBaja"
MsgBox ("REGISTRO ACTUAL ELIMINADO"), vbInformation, "REGISTRO ELIMINADO"
Else
MsgBox ("REGISTRO ACTUAL NO ELIMINADO"), vbInformation, "CANCELAR ELIMINACION"
End If
End Sub

He observado una pequeña anomalía que no soy capaz de solventar

El código funciona perfectamente, pero cuando voy al formulario EquiposBajas observo que en el campo FechaBaja el orden del formato no es el correcto, me explico; yo tengo en el código que sea dd/mm/yyyy, osea quiero que se vea el formato estándar que es primero el día, luego el mes y luego el año; sin embargo, y a pesar de estar el código correcto, la fecha en el campo FechaBaja se guarda como si fuera formato mm/dd/yyyy

A modo de ejemplo, un registro que paso al histórico en el día de hoy, cuando me abre el InputBox le pongo 06/04/2016 y el resto del código funciona perfecto, pero cuando abre el formulario EquiposBaja veo en el campo FechaBaja lo siguiente: 04/06/2016

¿Alguna idea de porque puede ser?

2 respuestas

Respuesta
2

En el código original te puse (estoy casi seguro, porque es como hago yo siempre y es como entiende las fechas el lenguaje SQL):

Format(vFecha, "mm/dd/yyyy") & "#)"

y tú en el tuyo tienes:

Format(vFecha, "dd/mm/yyyy") & "#)"

¿El por qué lo cambiaste?... Ni idea... je je

Exacto!!

Lo he modificado y ya parece que esta bien, debe ser que lo puse todo igual el formato y por eso me lo estaba cambiando

Gracias

Recuerda que, como indico en el comentario de la respuesta de Jacinto, el lenguaje SQL solo entiende formatos "americanos" (para fechas, números...) y por tanto, al trabajar con SQLs (aunque sea a través de VBA) hay que adaptar los datos a esos formatos.

Respuesta
1

Oscar: Haz un par de cosas y creo que se te solucionará.

En ese control de Formulario, mira sus Propiedades y en la Primera Pestaña de Formato, en la primera línea le pones como Formato >> Fecha Corta.

Haz lo mismo en la Tabla en vista de diseño. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas