AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Jeg har lavet noget lignende da jeg skulle rydde op i en gammel db. Jeg antager at din gamle tabel er opbygget således: ID (felt0) Instruktør (felt1) Kursist1 (felt2) Kursist2 (felt3) osv...
Hvis vi nu siger din nye tabel er opbygget således: ID (felt 1), Instruktør (felt 2), Kursist (felt 3)
Kør så følgende, hvor du har rettet xx til det antal kolonner der er i din gamle tabel. (Kolonnenumrene er 0-baserede, derfor xx-1. Jeg regner med at kolonne nr. 3 i din gamle tabel er den med det første kursistnavn - hvis det er nr. 2 skal der står i=1).
-------- Sub NyTabel() Dim db As Database Dim rsGamle As Recordset Dim rsNye As Recordset Dim i As Long
Set db = CurrentDb() Set rsGamle = db.OpenRecordset("SELECT * FROM GammelTabel") Set rsNye = db.OpenRecordset("SELECT * FROM NyTabel")
Do While Not rsGamle.EOF For i = 2 To xx-1 rsNye.AddNew rsNye!Instruktør = rsGamle!Instruktør rsNye!Kursist = rsGamle.Fields(i) rsNye.Update rsNye.Movenext Next rsGamle.MoveNext Loop Set rsGamle = Nothing End Sub
Når du er i Access så tryk alt+F11 for at åbne VB-editoren - er du vant til at bruge denne? Vælg så Insert>Module Klip og klister teksten fra og med "Sub.." til "End Sub" ind i modulet.
Nederst i VB-editoren i "Immediate"-vinduet skriver du : NyTabel og trykker Enter. Lad mig høre hvordan det går.
Lille rettelse - brug dette:
Sub NyTabel() Dim db As Database Dim rsGamle As Recordset Dim rsNye As Recordset Dim i As Long
Set db = CurrentDb() Set rsGamle = db.OpenRecordset("SELECT * FROM GammelTabel") Set rsNye = db.OpenRecordset("SELECT * FROM NyTabel")
Do While Not rsGamle.EOF For i = 2 To xx - 1 rsNye.AddNew rsNye!Instruktør = rsGamle!Instruktør rsNye!Kursist = rsGamle.Fields(i) rsNye.Update Next rsGamle.MoveNext Loop Set rsGamle = Nothing End Sub
Prøv at se om dette virker (7 er antallet af kolonne med start på 0):
Sub NyTabel() Dim db As Database Dim rsGamle As Recordset Dim rsNye As Recordset Dim i As Long Dim k As Long
Set db = CurrentDb() Set rsGamle = db.OpenRecordset("SELECT * FROM GammelTabel") Set rsNye = db.OpenRecordset("SELECT * FROM NyTabel") Do While Not rsGamle.EOF k = 3 For i = 2 To 7 Step 2 rsNye.AddNew rsNye!Instruktør = rsGamle!Instruktør rsNye!Kursist = rsGamle.Fields(i) rsNye!Sted = rsGamle.Fields(k) rsNye.Update k = k + 2 Next rsGamle.MoveNext Loop Set rsGamle = Nothing End Sub
ved hvilken linje stopper den? prøv at holde musen hen over værdierne i og k - hvad er de? Prøv at tjekke din tabel - hvor meget nåede den at lave før den stoppede? Du har referencen til DAO 3.6 i Tools > References? Det kører umiddelbart her.
Jo tak - held og lykke med det. Jeg havde en database med 30-40 tabeller som blev normaliseret til ca 5. tabeller med de par tricks.
Synes godt om
Ny brugerNybegynder
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.