26. oktober 2007 - 19:19Der er
6 kommentarer og 1 løsning
Denormalisering af data
Jeg har behov for nogeh hjælp til følgende :
Jeg skal have de-normaliseret følgende struktur, og lagt data i en ny struktur i Access.
Eksempel :
ID INV01 INV02 INV03 INV04 .... INV120 A 0 2 0 5 0 B 1 1 0 0 1 C 0 1 1 2 1
Ønsket resultat
ID Type Antal A INV02 2 A INV04 5 B INV01 1 B INV120 1 C INV01 1 C INV02 1 OSV .....
Løsningen jeg stræber efter skal være automatiseret, og tage højde for, at der kan komme flere INV-værdier fra kildedata ...
Kildedate består p.t. af 126 kolonner, heraf er de første 2 nøglefelter som identificerer rækkeindholdet ... resten er altså forskellige INVxx typer ( inventar ) og her kan det være både alfa og numeriske værdier ... men hvis feltindholdet er 0 eller null, skal der ikke oprettes en række.
For mig at se, skal du ud i en krydstabulering, idet du vil have data både vandret og lodret. På makeITeasy.dk ligger der et eksempel på en dynamisk rapport, der tager højde for et antal variable kolonner.
Synes godt om
Slettet bruger
29. oktober 2007 - 12:46#2
Er du ikke nød til at lave et loop, som åbner recordsættet og kører igennem. Så for hver id gennemgår du INVxx fra 01 til 126 og laver en insert i et nyt recordsæt, hvis not isnull!~)
Denne virker nogenlunde efter hensigten ( blot kun på første række )
Public Sub TransposeII() DoCmd.SetWarnings False Set dbs = CurrentDb Set rst = dbs.OpenRecordset("qrytest") I = 1 For Each fld In rst.Fields Værdi = rst.Fields(I) strsql = "Insert into tbltest Values (" & I & ",'" & Værdi & "');"
DoCmd.RunSQL strsql I = I + 1 Next
rst.Close Set rst = Nothing DoCmd.SetWarnings True End Sub
Hvordan får jeg indsat kolonnenavnet istedet for en talværdi i denne ;
strsql = "Insert into tbltest Values (" & I & ",'" & Værdi & "');"
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.