Bjørn Juniormester
27. september 2020 - 15:13 Der er 13 kommentarer og
1 løsning

Combobox med flere værdier i Formular

Hej

Jeg har en database med medlemmer fra flere klubber.
På oversigtsformularen har jeg så diverse udskrifter inden for et datointerval man taster ind på oversigtsformularen f.eks. de 5 bedste inden for en kategori.
På denne formular er en kombobox hvor man vælger f.eks. klub A og udskrifterne vedrører så kun klub A. Man kan selvf. vælge klub B og så er det naturligvis kun klub B.
Men jeg vil gerne at man kunne vælge flere klubber, således at man f.eks. får de 5 bedste samlet set hvad enten det er klub A eller B.

Mvh.
Bjørn
terry Ekspert
27. september 2020 - 15:47 #1
perhaps you should concider using a multi select listbox
Bjørn Juniormester
27. september 2020 - 16:42 #2
Hi Terry

Nu har jeg prøvet at lægge den ind på formularen og jeg kan godt vælge klub A og B, men forespørgslen er tom.?
Kriteriet i forespørgslen var før: Like [Formularer]![Oversigt]![Klubnavn_cbo] og det virkede fint.
Kriteriet er nu: Like [Formularer]![Oversigt]![Liste52]
Forespørgslen er tom uanset et eller flere valg.

Mvh.
Bjørn
terry Ekspert
27. september 2020 - 17:16 #3
When you select an item from a combo it gets placed in the textbox part of the combo, and this is what you refer to in the query.

When you use a listbox you cant do that and I'm afraid it will require some VBA to work with a listbox.
terry Ekspert
27. september 2020 - 17:19 #4
I dont know if you have VBA skills but if you do then take a look at this

http://allenbrowne.com/ser-50.html
Bjørn Juniormester
27. september 2020 - 20:10 #5
Hi
Mine evner i VBA er ikke særligt store, men jeg ser lige på det og vender tilbage.
Mvh.
Bjørn
terry Ekspert
27. september 2020 - 22:41 #6
If you need some help you can maybe send me an example of your database and I'lll modify it to use a listbox.
ekspertenATsanthell.dk
AT = @
bsn Seniormester
28. september 2020 - 09:23 #7
Et lille eks. ud fra terry #4 link...

Me.Liste4 er din liste på formularen...

Private Sub cmdListeValg_Click()
    'Purpose:  Open the report filtered to the items selected in the list box.
    'Author:  Allen J Browne, 2004.  http://allenbrowne.com
    Dim varItem As Variant      'Selected items
    Dim strWhere As String      'String to use as WhereCondition
    Dim strDelim As String      'Delimiter for this field type

    'Loop through the ItemsSelected in the list box
    With Me.Liste4
        For Each varItem In .ItemsSelected
            If Not IsNull(varItem) Then
                strWhere = strWhere & strDelim & .ItemData(varItem) & strDelim & ","
            End If
        Next
        MsgBox strWhere
    End With
End Sub
terry Ekspert
28. september 2020 - 13:22 #8
The code in the link is building the WhereCondition parameter of the DoCmd.OpenReport method, so it replaces the Like... criteria in the query.

So the WhereCondition looks something like this.

Klub IN("A", "C")
Bjørn Juniormester
28. september 2020 - 19:27 #9
Hej

Mail er på vej.

Mvh.
Bjørn
terry Ekspert
29. september 2020 - 12:41 #10
I have made a general function which gets the selected clubs from the listbox

Public Function GetClubs() As String

Dim varItem As Variant      'Selected items
Dim strWhere As String      'String to use as WhereCondition
Dim lngLen As Long          'Length of string
Dim strDelim As String      'Delimiter for this field type.
   
   
    GetClubs = ""
   
    strDelim = """"

    'Loop through the ItemsSelected in the list box.
    With Me.Liste52
        For Each varItem In .ItemsSelected
            If Not IsNull(varItem) Then
               
                strWhere = strWhere & strDelim & .ItemData(varItem) & strDelim & ","
               
            End If
        Next
    End With
   
    'Remove trailing comma. Add field name, IN operator, and brackets.
    lngLen = Len(strWhere) - 1
    If lngLen > 0 Then
        strWhere = "[Klub_Alias] IN (" & Left$(strWhere, lngLen) & ")"
    End If

    GetClubs = strWhere

End Function

Then for each report its just a case of calling the function

DoCmd.OpenReport "Spillere for angiven periode", acViewPreview, "", GetClubs(), acNormal
Bjørn Juniormester
29. september 2020 - 15:53 #11
Hi

Tusind tak for hjælpen.

BR.
Bjørn
terry Ekspert
29. september 2020 - 16:33 #12
Hope you can get the other reports working too
BR
Terry
Bjørn Juniormester
29. september 2020 - 20:22 #13
Hi
A little Problem, is it possible to insert the below code somewhere so you dont have to close "Vis Udskrift" to make another selection. F.eks. another club or more clubs?

    'Report will not filter if open, so close it.
    If CurrentProject.AllReports(strDoc).IsLoaded Then
        DoCmd.Close acReport, strDoc
    End If
   
    'Omit the last argument for Access 2000 and earlier. See note 4.
    DoCmd.OpenReport strDoc, acViewPreview, "", GetClubs() ', OpenArgs:=strDescrip

På forhånd tak (Thanks in advance???)
BR
Bjørn
terry Ekspert
29. september 2020 - 20:48 #14
Hope this is what you want

Put this function under the getClubs function

Private Function CloseReport(strDoc As String)

'Report will not filter if open, so close it.
    If CurrentProject.AllReports(strDoc).IsLoaded Then
        DoCmd.Close acReport, strDoc
    End If

End Function

Now make a few small changes to the other procedures which open reports
Hope you can see the necessary changes ;-)

Dim strDoc As String

    strDoc = "Spillere for angiven periode"
   
    CloseReport (strDoc)
    DoCmd.OpenReport strDoc, acViewPreview, "", GetClubs(), acNormal
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

Opret Preview

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





Premium
Skal du tage en Pro eller ej? Sådan vælger du imellem iPhone 12 og 12 Pro
Apples to iPhone-nyheder minder overraskende meget om hinanden. Der er dog væsentlige forskelle, som du skal være opmærksom på, når du vælger.
Computerworld
Det nye MitID er et tigerspring for bedre cybersikkerhed
Klumme: Det nye MitID er en enestående mulighed for et markant løft af it-sikkerheden i danske kommuner. Med baggrund i udfasningen af det nuværende NemID kan de samtidig forbedre og styrke deres it-systemers værn overfor cyberangreb.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Regner din ferie væk? Brug tiden på at søge en af disse otte stillinger, der er ledige netop nu
Det sjasker ned over hele Danmark. Du kan bruge de våde sommerdage på at søge et af disse otte job, der er ledige lige nu.
White paper
Få øjeblikkelig og brugbar sikkerhedsindsigt med SIEM i skyen
En stigende del af virksomhedens kritiske IT-infrastruktur og applikationer driftes som hybridløsninger eller leveres online som SaaS eller PaaS. Alligevel er mange sikkerhedsprodukter stadig on-premise-baserede, tunge at implementere, kræver løbende vedligehold, er svære at overskue og bliver slet ikke udnyttet effektivt – hvis de da overhovedet installeres. Men det er under hastig forandring. Gartner venter, at 80% af alle Security Information and Event Management-løsninger (SIEM) om højst fem år vil have kernefunktioner, der udelukkende leveres via skyen, og det er der gode grunde til. Cloudbaseret SIEM er mere agilt, lettere at implementere, trækker på både AI og flere datakilder, er enkle at skalere og giver et markant bedre og mere prioriteret overblik over aktuelle trusler. Læs meget mere i denne hvidbog.