Avatar billede hnteknik Novice
21. maj 2013 - 23:52 Der er 1 løsning

Import af XLS data med tekst i datakolonner

Brugere skal importere XLS data for at opdatere datoer i databasen.
Alt fungerer godt men dem, der udfylder XLS arkene skriver en gang imellem noget tekst for at forklare status for dem selv, men problemet er, at når XLS daa kommer ind som en tabel i .Access står disse kolonner som som tekst felter. Datoer står som tal i feltet og alt nulles, hvis feltet konverteres til et dato felt.

Jeg laver alligevel fra Access dataændringer i XLS arket /objektet inden det importeres. Jeg kender fra Access start og slut række samt navne på kolonnerne (hvis de ikke skriver forkert) så jeg mangler blot en effektiv oprensning af datofelterne ala Isdate() is false then = Null

Er der nogen, der har en effektiv kode for dette problem.

En kode snippet som virker, hvis der ikke er tekst i datofelter

    Set xlobj = GetObject(strFileName)
    Set wsobj = xlobj.Worksheets(strMappe)
    Set rngobj = wsobj.usedrange
    For I = rngobj.Column To rngobj.Columns.Count
        rngobj(4, I).Value = Trim(rngobj(4, I).Value)
        If rngobj(4, I).Value = "" Then
            rngobj(4, I).Value = "Header" & I
        End If
    Next I
     
    strRange = rngobj.Address
    strRange = Replace(strRange, "$", "")
    strRange = Replace(strRange, "A1", "A" & IntRowStart)
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "AXADates", strFileName, True, strMappe & "!" & strRange
    xlobj.Close False
    Set xlobj = Nothing
Avatar billede hnteknik Novice
23. maj 2013 - 10:45 #1
Så fandt jeg løsningen selv:

For I = rngobj.Column To rngobj.Columns.Count
        rngobj(IntRowStart, I).Value = Trim(rngobj(IntRowStart, I).Value)
   
        Select Case rngobj(IntRowStart, I).Value
       
        Case ""
            rngobj(IntRowStart, I).Value = "Header" & I
        Case "First Instructions rec'd", "Full instructions recv'd", "issued", "Cash rec'd territory"
            For J = IntRowStart + 1 To rngobj.Rows.Count
                If Not IsDate(rngobj(J, I).Value) Then
                    rngobj(J, I).Value = Null
                End If
            Next J
        Case Else
            '
        End Select
    Next I
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester