Det behøves det som sådan ikke... det er bare det at sum-queryen ikke er statisk, hvorfor værdierne ænder sig.
Jeg skal som slutresultat have det vist i en formular, hvor jeg ved valg af f.eks omsætning for selskaberne kan se hvilket der har haft den største oms.
I min sum-query har jeg kriterierelationer til en comboboks der laver opslaget. alt dette har dog intet med opgaven at gøre, men forklarer hvordan den hænger sammen...
Hvis du kan anvende lidt kode til, at vise dine resultater, er her en stump kode, der opretter et array med 3x2 felter.
Prøv at kør funktionen, så kan du tydeligt se hvor de forskellige ting ligger i arrayet.
--- Kode Start --- Public Sub HorToVer()
\'Deklarer objerkter/variable Dim rst As ADODB.Recordset
Dim varValues(3, 2) As Variant Dim varTemp As Variant Dim nPass As Integer Dim nCount As Integer
\'Instantierer Recordsettet Set rst = New ADODB.Recordset
\'Fylder recordsættet med data fra Query rst.Open \"qrySum\", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
\'Fylder arrayet med data fra recordsættet If Not rst.EOF Then varValues(0, 0) = rst(0).Value varValues(0, 1) = rst(0).Name varValues(1, 0) = rst(1).Value varValues(1, 1) = rst(1).Name varValues(2, 0) = rst(2).Value varValues(2, 1) = rst(2).Name End If
\'Lidt simpel Bubbelsort (kan forbedres) For nPass = 0 To 1 For nCount = 0 To 1 If varValues(nCount, 0) > varValues(nCount + 1, 0) Then varTemp = varValues(nCount, 0) varValues(nCount, 0) = varValues(nCount + 1, 0) varValues(nCount + 1, 0) = varTemp varTemp = varValues(nCount, 1) varValues(nCount, 1) = varValues(nCount + 1, 1) varValues(nCount + 1, 1) = varTemp End If Next nCount Next nPass
\'Gør hvad du vil med variable Debug.Print varValues(0, 0), varValues(0, 1) Debug.Print varValues(1, 0), varValues(1, 1) Debug.Print varValues(2, 0), varValues(2, 1)
End Sub --- Kode Slut ---
Du skal ændre qrySum til navnet på den query der returnerer dine summer.
Du skal ændre rst(0), rst(1), rst(2) sådan, at de henviser til de rigtige felter i din sum-forespørgsel.
0 er det første felt, 1 det andet osv.
Eksemplet går ud fra, at du har sat en reference til ADO (standard i Access 2000).
Du kan i stedet for at skrive værdier + feltnavne ud i debug vinduet, nu skrive dem ud i tekstbokse på en form eller gemme dem i en tabel.
Det er muligt, at det kan laves udelukkende ved brug af queries. Du må meget gerne sende DB\'en til mig, samt en beskrivelse af hvilke tabeller, samt parametre det drejer sig om.
Gider du ikke lige smide en kommentar med hvorfor ovenstående løsning ikke opfylder dine behov.
Du skal oprette flg. (er gjort i den DB jeg har sendt til dig.)
En tabel der hedder tblResultat der indeholder 2 felter, 1 - Tekst felt, 2 - Valuta/Tal felt (Navnene er underordnede).
En forespørgsel der hedder qryResultat, der sorterer tblResultat på den måde du ønsker.
--- Kode Start --- Public Sub createTable()
\'Erklærer variable Dim db As DAO.Database Dim rstQuery As DAO.Recordset Dim rstTable As DAO.Recordset
Dim nCounter As Integer
\'Sætter en enkelt konstant, der angiver hvor mange firmaer der \'Eksisterer i forespørgslen: Query1 Const ANTAL_FIRMAER As Integer = 3
\'Instaniterer Set db = CurrentDb
Set rstQuery = db.OpenRecordset(\"Query1\", dbOpenDynaset) Set rstTable = db.OpenRecordset(\"tblResultat\", dbOpenDynaset)
\'Sletter alle poster i tabellen: tblResultat \'Og sørger for, at vi ikke skal bekræfte handlingen DoCmd.SetWarnings False DoCmd.RunSQL \"DELETE * FROM tblResultat\" DoCmd.SetWarnings True
\'Flytter til den første (og eneste post i Query1) \'Vi skulle gerne være der alligevel, men... rstQuery.MoveFirst
\'Tilføjer først navnet på feltet (FirmaX) \'Og derefter værdien. Dette gøres for alle firmaer For nCounter = 1 To ANTAL_FIRMAER rstTable.AddNew rstTable.Fields(0).Value = rstQuery.Fields(nCounter - 1).Name rstTable.Fields(1).Value = rstQuery.Fields(nCounter - 1).Value rstTable.Update Next nCounter
\'Viser resultat forespørgslen, der kan sorteres som man ønsker. DoCmd.OpenQuery \"qryResultat\", acViewNormal
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.