Records splitsen op spatie

Status
Niet open voor verdere reacties.

mfransen

Gebruiker
Lid geworden
14 jul 2009
Berichten
5
Ik heb een vraagje over het splitsen van records in Access.

Ik heb een tabel (import van een CSV bestand) met de volgende opmaak (het veld Datum is een tekstveld):

RecordnummerDatum
2341980-05-24
2661990-05-24 1990-06-26
4421973-07-24
4492005-07-24 2005-09-12 2005-10-26

Deze wil ik omzetten naar:

RecordnummerDatum
2341980-05-24
2661990-05-24
2661990-06-26
4421973-07-24
4492005-07-24
4492005-09-12
4492005-10-26

Hoe kan ik de desbetreffende records opsplitsen naar 2 aparte records?
 
Laatst bewerkt:
Je kunt dat doen met een procedure die door je huidige import tabel loopt, van elk record het veld Datum splitst (arr = SPLIT(rst!Datum," ")) en vervolgens met een loopje For i = LBound(arr) To UBound(arr)) dan records aanmaakt in de doeltabel. Waar datum dan vast wel een datumveld zal zijn :)
 
Dank voor je antwoord, ik heb inmiddels een en ander zitten proberen, maar ik snap nog niet echt hoe ik dat moet doen... Zou je misschien een voorbeeldje kunnen geven?
 
Hierbij dan eindelijk een voorbeeldje. Ik heb maar even alleen de datumtabel eruitgelicht. Het veld ISN is een koppelveld voor een andere tabel.
 

Bijlagen

  • Datumvoorbeeld.zip
    18,7 KB · Weergaven: 25
Ik heb wel een functie die het oplost, maar je data klopt niet. Neem bijvoorbeeld record #16, met deze 'datums': 1979-12-18 1970-00-00. De eerste datum is prima, de tweede bestaat niet. Daar kun je dus ook nooit een datum van maken.
Heb je overal wél een datum staan, dan is dit de juiste functie.

Code:
Function DatumSplitsen()
Dim rs As Recordset, rst As Recordset
Dim arr As Variant, i As Integer
    Set rs = CurrentDb.OpenRecordset("Datum")
    Set rst = CurrentDb.OpenRecordset("Datum_Nieuw")

    Do While Not rs.EOF
        arr = Split(rs!Datum, " ")
        For i = LBound(arr) To UBound(arr)
            rst.AddNew
            rst!ISN = rs!ISN
            rst!Datum = arr(i)
            rst!Datumtype = rs!Datumtype
            rst.Update
        Next i
        rs.MoveNext
    Loop
    rst.Close
    rs.Close
End Function

Anders moet je voor je datum nog steeds met een tekstveld werken, dan kan het wel.
Code:
Function DatumSplitsen()
Dim rs As Recordset, rst As Recordset
Dim arr As Variant, i As Integer
    Set rs = CurrentDb.OpenRecordset("Datum")
    Set rst = CurrentDb.OpenRecordset("Datum_Nieuw")

    Do While Not rs.EOF
        arr = Split(rs!Datum, " ")
        For i = LBound(arr) To UBound(arr)
            rst.AddNew
            rst!ISN = rs!ISN
            rst!Datum = arr(i)
            rst!Datumtype = rs!Datumtype
            rst.Update
        Next i
        rs.MoveNext
    Loop
    rst.Close
    rs.Close
    MsgBox "Klaar!"
End Function
 
Hartelijk dank! Het is gelukt! (Uiteraard na het wijzigen van de datums in iets zinnigs... dit is het resultaat van 30 jaar aan invoermethodes....)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan