Avatar billede region Nybegynder
03. november 2000 - 17:28 Der er 12 kommentarer og
1 løsning

HASTER..!!!!!!!!!!! stigende orden på query

Jeg har en query med 3 felter der sammentæller en sum på felterne.

Det jeg ønsker er en Vertikal stigende orden på disse felter præsenteret i en ny query.




Avatar billede lkp Nybegynder
03. november 2000 - 17:31 #1
Hej Region

Skal det være en query, hvordan skal felterne bruges?

Med venlig hilsen

LKP
Avatar billede region Nybegynder
03. november 2000 - 17:36 #2
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...
Avatar billede ds-zim Nybegynder
03. november 2000 - 17:44 #3
Gør som Jalle foreslog ? Godt nok SQL specifikt og R afhængigt af hvor mange beregnede felter
du har!

SELECT .... ORDER BY Avg(tabelnavn.feltnavn)
Avatar billede region Nybegynder
03. november 2000 - 17:46 #4
KEnder ikke denne funktion...vil du forklare ...

Avg ...????
er det ikke average = gennemsnit...????
Avatar billede ds-zim Nybegynder
03. november 2000 - 18:07 #5
Hmm, jo .. Glem jeg foreslog D :)

Hvor mange beregnede felter R der? Hvis D kun R 1, kan du jo bare bruge ORDER BY Tabel.feltnavn
Avatar billede jalle Nybegynder
03. november 2000 - 18:46 #6
En lille rettelse til forrige svar:

Select felt1, felt2,... from tabel order by felt1
Avatar billede lkp Nybegynder
03. november 2000 - 19:11 #7
Hej Region

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.

Håber at det hjælper dig, ellers skriv igen.

Med venlig hilsen

LKP
Avatar billede privaten Nybegynder
04. november 2000 - 09:22 #8
Hej Region

Jeg vil meget gerne kigge på problemet, hvis du fremsender db + beskrivelse
Avatar billede region Nybegynder
06. november 2000 - 07:59 #9
sådan her er queryen lavet nu.

felt 1    felt 2    felt 3
100        200      150

Sådan vil jeg gerne have det vist i en ny query.

felt 1
200
150
100


Avatar billede lkp Nybegynder
06. november 2000 - 11:05 #10
Hej Region

Har du set på mit eksempel. Kan det ikke bruges.

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.

Med venlig hilsen

LKP
lars@monitor-lk.dk
Avatar billede region Nybegynder
08. november 2000 - 13:37 #11
LKP har ikke pr mail løst / svaret endnu hvorfor privaten får chancen....

Først til mølle princip D\'herrer...
Avatar billede lkp Nybegynder
08. november 2000 - 14:34 #12
Hej Region

Hermed koden der gør det du efterspørger.

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
       
End Sub

--- Kode slut ---

Med venlig hilsen

LKP
Avatar billede region Nybegynder
08. november 2000 - 17:03 #13
tak for hjælpen
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