Rijen splitsen

Status
Niet open voor verdere reacties.

LKH

Gebruiker
Lid geworden
8 feb 2012
Berichten
9
Hallo,

Ik wil graag rijen in een access tabel gaan splitsen op basis van de waarde in een kolom. Zie voorbeeld bestand, nagemaakt in Excel. Waarde kolom aantal is max 133.

Is dit mogelijk?
 

Bijlagen

  • voorbeeldsplitsen.xlsx
    9 KB · Weergaven: 40
Laatst bewerkt:
Als ik je voorbeeld zo bekijk, heeft het veld [Aantal] geen enkele functie, en het veld [Einddatum] ook niet. Aantal is nu het datumverschil tussen startdatum en einddatum, en de gewenste einddatum is startdatum+1. Maak een nieuwe tabel en maak een functie die op basis van het verschil tussen start- en einddatum in die tabel de gegevens toevoegt, en gebruik daar dus maar één datumveld in, want zoals gezegd: je eínddatum is simpel te herleiden uit de startdatum en dan hoef je dat niet in de tabel op te slaan (dataredundantie).
 
In de gewenste situatie krijg je dat einddatum is startdatum + 1, maar op basis van de bron moet er bepaald worden in hoeveel regels je het moet uitsplitsen. bijvoorbeeld in bron 1 regel: startdatum 1-1-2016 en einddatum 31-1-2016 moet uitgesplitst worden naar 31 regels. Waarbij dus geld 1 regel is 1 dag. Ik ben dus eigenlijk inderdaad opzoek naar en functie waarbij het verschil tussen start- en einddatum worden toegevoegd aan het tabel.
 
Op basis van een import uit je Excel bestand kan je met deze functie een heel eind komen:
Code:
Function Blad1()
Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset
Dim db As Database
Dim iStart As Long, iEind As Long
Dim ID1 As Long, ID2 As Long

    Set rs1 = CurrentDb.OpenRecordset("Blad1")
    With rs1
        Do While Not .EOF
            iStart = CDbl(!StartDatum)
            iEind = CDbl(!EindDatum)
            ID1 = !id
            ID2 = !id_2
            Do While iStart <= iEind
                Set rs2 = CurrentDb.OpenRecordset("tblTemp")
                With rs2
                    .AddNew
                    !ID_1 = ID1
                    !id_2 = ID2
                    !StartDatum = CDate(iStart)
                    .Update
                    .Close
                End With
                iStart = iStart + 1
            Loop
            .MoveNext
        Loop
    End With
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan