Avatar billede civil05 Nybegynder
09. juli 2008 - 10:08 Der 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...

på forhånd tak!
Avatar billede terry Ekspert
09. juli 2008 - 11:08 #1
There is no easy way of scripting your dB.

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.
Avatar billede civil05 Nybegynder
09. juli 2008 - 13:10 #2
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
Avatar billede terry Ekspert
09. juli 2008 - 13:18 #3
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 = @
Avatar billede terry Ekspert
09. juli 2008 - 19:30 #4
just noticed that the answer I gave 09/07-2008 11:08:24 was actually intended for another question :o)
Avatar billede fdata Forsker
09. juli 2008 - 22:29 #5
Du kan få en grovskitse her:

Option Compare Database
Option Explicit

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.
Avatar billede civil05 Nybegynder
12. november 2008 - 11:11 #6
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!
Avatar billede fdata Forsker
12. november 2008 - 19:50 #7
No problem. Takker for point  ;o)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester