none
problema con formato de fechas RRS feed

  • 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
    jueves, 15 de diciembre de 2011 21:05

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
    martes, 20 de diciembre de 2011 20:33

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
    viernes, 16 de diciembre de 2011 5:44
  • 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
    lunes, 19 de diciembre de 2011 19:01
  • Lo ziento, pero me temo que con la información de que dispongo no te puedo decir como utilizar ese código en TU aplicación.
    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    lunes, 19 de diciembre de 2011 21:00
  • 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
    lunes, 19 de diciembre de 2011 21:25
  • ¿Cual es el código con que guardas los datos mediante el recordset?, sin el no puedo decirte nada.
    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/
    martes, 20 de diciembre de 2011 18:03
  • 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_Inicial

    While 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
    martes, 20 de diciembre de 2011 18:51
  • 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
    martes, 20 de diciembre de 2011 20:33
  • Muchisimas Gracias, tu colaboracion es invaluable, que bueno que en el mundo existan personas como tu con la disposicion de heredar el conocimiento.

    Desde colombia inmensamente agradecido.

    Cesar Redondo


    Cesar Redondo
    martes, 20 de diciembre de 2011 21:13