18. september 2003 - 12:18Der er
17 kommentarer og 2 løsninger
Sortering af Combo Box
Kan man styre sorteringen i en combobox ved hjælp af en anden combox der indholder feltnavnene fra den første combobox. Eks: Combo1 indeholder 5 feltnavne 2 gange. 5 med asc. og 5 med desc.
Prod-Asc Prod-Desc Omsætn-Asc Omsætn-Desc etc....
Kan man få den til at styre hvordan Combo2 præsenterer poster fra den samme tabel, så den viser Ordrenr, men sorteret efter de kriterier der er givet i Combo1
Jeg forstår ikke helt din beskrivelse, men du kan jo altid styre sorteringen ved at lade din rækkekilde være en forespørgsel og derved soretere denne, som du ønsker!
ja det er godt nok, men brugerne skal selv kunne vælge hvordan posterne i Combo2 skal soreteres. Den bruges til at filtere ca 22000 rækker af økonomiske data, omsætn, likviditet etc. Nogen gange vil de gerne ha det ordre no. med størst omsætn. øverst i Combo2 andre gange det ordreno med størst likviditet etc.
As you can see in th example it uses the contents of one combo to set the contents of another and at the same time you could alter the sort order by including this in the SQL.
Du kan således, vha VBA, ændre SQL-sætningen i rækkekilden afhængig af andre valg, som brugeren har foretaget.
på EfterOpdatering på Combo1 kan lægge noget kode á la dette:
Private Sub Combo1_AfterUpdate() Select case Me!Combo1 case "Prod-Asc" Me!Combo2.Rowsource = "Select * From Tabel Order By Prod" case "Prod_Desc" Me!Combo2.Rowsource = "Select * From Tabel Order By Prod Desc" ... ... end select end sub
Dette er den simple (og ikke så smarte metode). Det kan formentlig gøres smartere, men så skal jeg 'se' databasen eller have flere oplysninger
Jeg vil umiddelbart også foreslå at lave 2 kontrolobjekter (kombobokse eller optionbuttons) således at brugeren først vælger Produkt, omsætning m.m. og derefter vælger om den skal sortere stigende eller faldende.
Dette kunne gøres simpelt ved at lave 2 kombobokse.
Derefter ser koden således ud: Me!Combo2.Rowsource = "Select DitFelt From Tabel Order By [" & Me!combo1 & "] " & Me!cboSortering
cboSortering er den comboboks som indeholder Asc eller Desc
Den kunne se således ud: If Me!Radiobutton = 1 then Me!Combo2.Rowsource = "Select DitFelt From Ordrer Order By [" & Me!combo1 & "]" else Me!Combo2.Rowsource = "Select DitFelt From Ordrer Order By [" & Me!combo1 & "] Desc" endif
Man kunne godt gøre den lidt kortere ved at bruge IIF i slutningen af sætningen. Derved havde man kun én linie, men denne metode er 'kønnere', da IIF lidt er en FY-kommando
Basically what this problem boils down to is having one or more controls (combo's, radio buttons) which are used to build the SQL for the combo's Rowsource. This is just a plain old SQL statment which has to be built in VBA code usingthe values chosen form your controls.
I would suggest ONE function to do this
Function ChangeRowSource()
'This is where your cod egoes to build the SQL fro the rowsource.
End Function
Then in each control (which you are using to build the Rowsource) AFTER UPDATE event property you write
=ChangeRowSource()
This will call the function every time you change one of the values of one of the controls.
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.