09. juli 2008 - 10:08Der er
6 kommentarer og 1 løsning
multiplikation af to tabeller
Jeg har 2 tabeller som jeg ønsker at gange sammen. Første tabel har een kolonne og et variabel indhold af rækker, hvor første række indeholder et navn:
M3 2000 2001 2010
Anden tabel indeholder en kolonne med navn og derefter samme antal kolonner som tabel 1 har rækker:
Navn B1 B2 B3 T1 0,1 0,2 0,3 T2 0,3 0,3 0,1 T3 0,5 0,6 0,6 T4 0,2 0,6 0,2
Tallene fra tabel 1 skal så ganges på tabel 2 således, at den første række i tabel 1 ganges på alle tal i kolonne 2 i tabel 2 (kolonnen med B1). Anden række i tabel 1 skal så ganges på alle tal i kolonne 3 i tabel 2 (kolonnen med B2) og så fremdeles.
antallet af rækker og kolonner vil variere fra gang til gang koden bruges, men der er altid samme antal overensstemmelse mellem antallet af rækker i tabel 1 og antallet af kolonner i tabel 2.
håber der er en venlig sjæl, der kan hjælpe... Jeg sender gerne en eksempeldatabase...
If you need to create a new (clean) version of the dB then it might be easiest to just copy a backup of the original (clean) dB over the one you want to replace.
Okay, men det er muligt, at lave funktionen eller? Jeg tænker noget med for i = 1 to i = antallet rækker i tabel 2 kolonne 2 skal tallet fra række 1 i tabel 1 ganges på, men er helt på bar bund mht til en brugbar løsning.... så alt hjælp er jeg meget taknemmelig overfor
I'm a bit pushed for time but if you dont get any assistance you can send me your dB and I'll try and see if I can find time later to help with a solution. ekspertenATsanthell.dk AT = @
Sub Gange() Dim i As Integer Dim n As Integer Dim DummyRst As Recordset Dim Faktor()
Debug.Print "-------------" ' Opsaml faktorer i array Set DummyRst = CurrentDb.OpenRecordset("Tabel1") With DummyRst ' Tæl antal faktorer n = .RecordCount - 1 Debug.Print n ReDim Faktor(n) .MoveNext ' Skip første række i = 1 Do Faktor(i) = .Fields("Felt1") i = i + 1 .MoveNext Loop Until .EOF .Close End With Set DummyRst = Nothing
' Selve beregningen Set DummyRst = CurrentDb.OpenRecordset("Tabel2") With DummyRst Do ' .Edit For i = 1 To n Debug.Print .Fields(i), .Fields(i) * Faktor(i), ' .Fields(i) = .Fields(i) * Faktor(i) Next i Debug.Print ' .Update .MoveNext Loop Until .EOF .Close End With Set DummyRst = Nothing End Sub
BEMÆRK Access er en klovn til matematik. I eksemplet har jeg blændet de linier af, der foretager selve opdateringen. Til gengæld kan du se forløbet i Immediate vinduet (Ctrl-G). Hvis du vælger at slå opdateringen til, skal du jo nok indbygge en eller anden metode, der sikrer at brugeren ikke kører showet to gange efter hinanden.
Hej fdata, jeg undskylder for den meget sene lukning af spørgsmålet... en masse private komplikationer, men nu har jeg haft tid til at kigge på det igen og jeg takker for dit svar!
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.