Principales respuestas
problema con formato de fechas

Pregunta
-
buenas tardes, nuevamente recurro a ustedes para solicitar su amable colaboracion con el siguiente problema, estoy cargando unos archivos planos (TXT) en access 2007, hay un campo fecha que viene en formato yyyymmdd y necesito trabajarlo en access con el formato yyyy/dd/mm para efectos de control de registro por fecha. pero no he logrado hacerlo.. Quedo inmensamente agradecido a quien me pueda colaborar con este problema.
saludos
cesar redondo
Cesar Redondo
Respuestas
-
Declara una variable Dim strFecha as string luego, ya dentro del bucle, extrae la fecha en esa variable strFecha = Val(Mid(l, 79, 8)) aplicalo al campo del recordset rs!Fecha = DateSerial(left(strFecha,4), mid(strFecha,5,2), right(strFecha,2))
Saludos a todos desde Huelva
http://www.mvp-access.es/emilio/- Marcado como respuesta Uriel Almendra martes, 5 de marzo de 2013 21:23
Todas las respuestas
-
Hola!
puedes reconstruir la fecha con dateserial
Dateserial(left(LaFecha,4), mid(LaFecha,5,2), right(LaFecha,2))
y luego aplicar el formato que quieras
Saludos a todos desde Huelva
http://www.mvp-access.es/emilio/- Editado Emilio Sancha viernes, 16 de diciembre de 2011 5:44
- Propuesto como respuesta José Mª Fueyo viernes, 16 de diciembre de 2011 9:47
-
Buenas tardes, Agradezco mucho tu respuesta, pero realmente no se donde colocar este codigo para convertir la columna de fecha en formato yyyymmdd, al formato yyyy/mm/dd. Disculpa mi ignorancia pero prefiero preguntar a alguien que sabe hacerlo.
Saludos.
Cesar Redondo -
-
buenas tardes, mil gracias por tu amable atencion, la idea es que desde un archivo plano tomo varios campos con un recordset, entre ellos esta el campo fecha el cual viene en el archivo en formato (yyyymmdd) y los llevo a una tabla "tarjetas" en la cual el campo fecha queda con formato (Numero), para algunas operaciones dentro de la aplicacion debo transformar este formato a (yyyy/mm/dd) para poder trabajar con rangos de fechas.
Este proceso es el que no se llevar a cabo y por ello ruego por tu ayuda. Mil gracias por tu amable colaboracion.
Saludos, Cesar Redondo
Cesar Redondo -
-
Buenas Tardes, este es el codigo con el que guardos los datos en la tabla.
Public Function importarMCVS()
Dim Fecha_archivo As Double
Dim ruta As String
Dim rutaarchivo As String
Dim rutaarchivo1 As String
Dim Fecha_Inicial As String
Dim Fecha_Final As String
Dim Fecha As Double
ruta = BrowseFolder("Seleccione la ruta de los archivos")
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset
Dim db As DAO.Database
Dim t As String
Dim tt As Integer
Dim ttt As Integer
Set db = CurrentDb()
DoCmd.SetWarnings False
Fecha_Inicial = Form_Form1.Fecha_Inicial
Fecha_Final = Form_Form1.Fecha_Final
Fecha = Fecha_InicialWhile Fecha <= Val(Fecha_Final)
rutaarchivo = ruta & "\MCMD" & Fecha & ".txt"
rutaarchivo1 = ruta & "\VSMD" & Fecha & ".txt"
If Dir(rutaarchivo) = "" Then GoTo fin1
Close #1
Open rutaarchivo For Input As #1
Dim reg
Dim pos
reg = 0
Do While Not EOF(1)
Line Input #1, l
reg = reg + 1
t = Mid(l, 1, 2)
tt = Val(Mid(l, 203, 3))
ttt = Val(Mid(l, 179, 2))
If t = "01" And (ttt = 10 Or ttt = 14) And tt < 10 Then
Set rs = db.OpenRecordset("select * from Tarjetas", dbOpenDynaset)
rs.AddNew
rs!tipo_registro = Mid(l, 1, 2)
rs!Codigo_Unico = Mid(l, 38, 19)
rs!Nombre_Comercio = Mid(l, 140, 22)
rs!Ciudad = Mid(l, 162, 13)
rs!Fecha = Val(Mid(l, 79, 8))
rs!hora = Mid(l, 87, 6)
rs!tarjeta = Mid(l, 11, 19)
rs!valor = Val(Mid(l, 206, 13)) / 100
rs!autorizacion = Mid(l, 279, 8)
rs!fecha_deposito = Mid(l, 95, 8)
rs!Franquicia = "MASTERCARD"
rs!codigo_transaccion = Mid(l, 179, 2)
rs!movimiento = Mid(l, 73, 4)
rs!codigo_servicio = Mid(l, 356, 3)
rs!modo_ingreso_pos = Mid(l, 353, 3)
rs!captura = Mid(l, 272, 1)
rs!flag = Mid(l, 203, 3)
rs.Update
rs.Close
Debug.Print "registro : " & reg
End If
fina:
Loop
Close #1
fin1:
If Dir(rutaarchivo1) = "" Then GoTo fin2
Open rutaarchivo1 For Input As #1
reg = 0
Do While Not EOF(1)
Line Input #1, l
reg = reg + 1
Set rs = db.OpenRecordset("select * from Tarjetas", dbOpenDynaset)
If Mid(l, 1, 2) = "06" Then
rs.AddNew
rs!tipo_registro = Mid(l, 1, 2)
rs!Codigo_Unico = Mid(l, 85, 10)
rs!Nombre_Comercio = ""
rs!Ciudad = ""
rs!Fecha = Val("20" & Mid(l, 83, 2) & Mid(l, 81, 2) & Mid(l, 79, 2))
rs!hora = ""
rs!tarjeta = Mid(l, 56, 19)
rs!valor = Mid(l, 123, 9)
rs!autorizacion = Mid(l, 99, 6)
rs!fecha_deposito = Val("20" & Mid(l, 161, 2) & Mid(l, 159, 2) & Mid(l, 157, 2))
rs!Franquicia = "VISA"
rs!codigo_transaccion = Mid(l, 152, 2)
rs!movimiento = Mid(l, 1, 2)
rs!codigo_servicio = Mid(l, 267, 1)
rs!modo_ingreso_pos = Mid(l, 264, 1)
rs!captura = Mid(l, 156, 1)
rs.Update
rs.Close
End If
Debug.Print "registro : " & reg
fin:
Loop
Close #1
fin2:
Fecha = Fecha + 1
Wend
MsgBox "Fin De la importarcion", vbInformation, "Fraudes"
DoCmd.SetWarnings True
End Function
Cesar Redondo -
Declara una variable Dim strFecha as string luego, ya dentro del bucle, extrae la fecha en esa variable strFecha = Val(Mid(l, 79, 8)) aplicalo al campo del recordset rs!Fecha = DateSerial(left(strFecha,4), mid(strFecha,5,2), right(strFecha,2))
Saludos a todos desde Huelva
http://www.mvp-access.es/emilio/- Marcado como respuesta Uriel Almendra martes, 5 de marzo de 2013 21:23
-