Meervoudige selectie in filter voor rapport grafieken

Status
Niet open voor verdere reacties.

sjobbels

Gebruiker
Lid geworden
11 dec 2008
Berichten
145
Hoi,

Adh van een listbox met een aantal salesmanagers hierin wordt een filter gemaakt voor een grafiek rapport. Nu wil ik een rapport maken waarin ik meerdere salesmanagers kan selecteren. Via de listbox heb ik de optie "Meervoudige selectie" op enkelvoudig gezet, maar nu werkt de filter niet meer. Wie heeft hier een oplossing voor of een voorbeeld??

thanks
 
Krijg je wel een meervoudige selectie?
Zo ja, dan moet je deze nog wel opsplitsen en er een geldige Filterstring van maken in de trant van: Salesmanager="Paul" Or Salesmanager="Piet"
 
Ja ik kan wel meerdere Salesmanagers selecteren, maar als ik dan op de filter knop druk dan wordt de grafiek blanco...
Dit moet ik in de query instellen toch?
 
Dat kan; ik weet niet hoe je nu het filter toewijst aan het rapport.
 
Dat kan; ik weet niet hoe je nu het filter toewijst aan het rapport.

op de volgende manier:

Private Sub cmdSalesManager_Click()
Dim strSalesmanager As String
Dim strFilter As String
' Controleer of het rapport geopend is
If SysCmd(acSysCmdGetObjectState, acReport, "AGrafiek") <> acObjStateOpen Then
MsgBox "Het rapport is niet geopend, start de zoekfunctie opnieuw."
Exit Sub
End If
' Criteria string voor SalesManager veld
If IsNull(Me.cmbSalesManager.Value) Then
strSalesmanager = "Like '*'"
Else
strSalesmanager = "Like '*" & Me.cmbSalesManager.Value & "*'"
End If


' Filter voor BezoekiID
strFilter = "[SalesManager] " & strSalesmanager
' Gebruik maken van de filter en aan zetten
With Reports![AGrafiek]
.Filter = strFilter
.FilterOn = True
End With
End Sub


En in de query staat bij Salesmanager het volgende:

[forms]![frmGrafiekrapport]![cmbSalesManager]
 
Met je huidige code maak je maar één filterstring aan, gebaseerd op (aan de naam te zien) een Keuzelijst met invoervak. Voor een keuzelijst met meervoudige keuze heb je een andere code nodig om de waarden uit de lijst te halen. Iets als dit:

Code:
Private Sub lstSalesManager_AfterUpdate()
Dim Keuze As Variant
Dim strFilter As String

    For Each Keuze In lstSalesManager.ItemsSelected()
        If Len(strFilter) <> 0 Then strFilter = strFilter & " OR "
        strFilter = strFilter & "[SalesManager] Like '*" & lstSalesManager.Column(0, Keuze) & "*'"
    Next Keuze
    MsgBox strFilter

End Sub

Hierbij wordt voor elke geselecteerde waarde de filterstring uitgebreid met een OR toevoeging. Probeer deze maar eens uit.
 
hoi octafish,

Ik heb een deel uit mijn database gekopieerd naar een nieuwe database (aangezien de info en de grootte). Ik kom er nml niet uit, heb vanalles geprobeerd, en de code die er nu in staat is hetzelfde zoals ik hierboven heb beschreven.

Ik hoop dat je me verder kunt helpen.

grt juul
 
Laatst bewerkt:
Heb je wel het goede formulier in de db gezet? Ik zie hier namelijk geen keuzelijst in staan, alleen keuzelijsten met invoervak.
 
pardon, ik zie idd dat ik de vorige combo nog heb laten staan, deze had ik ernaast al vervangen door een listbox.
 

Bijlagen

Volgens mij heb ik 'm. Je hebt weinig aan een filter in dit geval, omdat je werkt met een grafiek. En deze heeft zijn eigen gegevensbron. Je zult dus met VBA de gegevensbron van de grafiek moeten bewerken met een geopend rapport, de onderliggende query aanpassen, weer sluiten en het rapport opnieuw openen. Zie voorbeeld!
 

Bijlagen

thanks voor de snelle reactie.
Ik krijg alleen een foutmelding bij het filteren zie bijlage.

Moet ik hiervoor iets in references aanvinken??

thanks
 

Bijlagen

Die kende ik nog niet... ;)
Kijk eens wat er gebeurt als je in VBA met <Foutopsporing>, ,db Compileren> door de fouten heenloopt? Vaak heeft een fout zoals deze helemaal niks met de procedure te maken, maar zitten er ergens anders foutjes die dit veroorzaken.
 
hoi octafish,

ik heb een deel van je code verwijderd en dan werkt het wel :) gelukkig
Nu loop ik wel tegen een ander probleem aan.... als we nu naar 2010 gaan geeft hij geen verschil aan in jaartal :confused: Hoe kan ik dit het beste oplossen? een zoekoptie met jaartal toevoegen?

grtz
 
Er wordt nu alleen op kwartaal geselecteerd, dus dat kan wel kloppen. Je kunt, als je alleen het huidige jaar wilt zien, een datumfilter toevoegen:
Je query qAAAAAAA wordt dan:

Code:
SELECT tblBezoek.SalesManager, Count(tblBezoek.BezoekID) AS Aantal, "K" & Format([Datum],"q") AS Kwartaal
FROM tblBezoek
WHERE (((Year([Datum]))=Year(Date())))
GROUP BY tblBezoek.SalesManager, "K" & Format([Datum],"q");

Wat heb je overigens weggehaald? Ben ik wel benieuwd naar...
 
In de bijlage kun je zien wat ik weg heb gehaald:

bij: DoCmd.OpenReport stDocName, acViewDesign, , , acHidden

Hier heb ik de komma's en acHidden weggelaten en bij:

DoCmd.OpenReport stDocName, acPreview, , strSalesmanager, , sForm

heb ik de komma's en sForm weggehaald.

Ik heb geprobeerd om nu de zoekfuntie uit te breiden met een jaartal functie, maar het lijkt erop dat deze niet wordt meegenomen. Zou je hier misschien nog naar kunnen kijken

sorry ben nog niet zo bedreven in vba..... ;)

Bedankt alvast, waardeer het enorm dat je me wilt helpen!!
 

Bijlagen

Laatst bewerkt:
Béétje vreemd dat hij DoCmd.OpenReport stDocName, acViewDesign, , , acHidden niet goed pakt; door dit weg te halen, wordt het rapport zichtbaar geopend, aangepast en weer afgesloten. Heb je al geprobeerd om vanaf dit punt:
DoCmd.OpenReport stDocName, acViewDesign
zelf de komma's te typen, tot je acHidden als optie kreeg? Want voor zover ik weet is het niet iets dat niet standaard beschikbaar is...

In de regel DoCmd.OpenReport stDocName, acPreview, , strSalesmanager, , sForm is sForm de naam van het formulier van waaruit je het rapport opent. De variabele wordt toegewezen aan het OpenArgs argument, en wordt op het rapport weer gebruikt om het formulier zichtbaar te maken. Zoals je kunt zien in de rest van de code, wordt het formulier niet gesloten, maar verborgen.
Ook deze eigenschap moet je zonder meer kunnen maken... (en gebruiken!)
 
Het is gelukt, ik moest bij de 2e Docmd strSalesmanager en sForm omdraaien.
Morgen maar even stoeien om de filter op jaarbasis aan de praat te krijgen.

thanks voor je hulp !!!
 
Laatst bewerkt:
Het lukt me niet om er een filter op jaarbasis aan te koppelen. Deze is wel nodig om een vergelijk te maken met voorgaande jaren, en ik wil nml niet dat er 2 jaren in een kolom staan.....

thanks
 

Bijlagen

Is het uberhaupt mogelijk om via het formulier naast de lstSalesmanager een zoekoptie toe te voegen met de mogelijkheid om op jaarbasis te filteren (zoals aangemaakt in bovenstaand access voorbeeld). Het lukt me nml voor geen meter :confused: om deze hieraan toe te voegen......
Ik hoop dat jullie me kunnen helpen
 
Beetje flauwe opmerking, maar wil je eens uitleggen namens alle mede soortegenoten, waarom je het jaar van een datum ophaalt met de functie FORMAT? Niet alleen maak je dan tekst van het jaartal, de functie is trager dan Year([Datum]), en je moet in filteringen ook altijd rekening houden met het feit dat je nu een Tekststring gaat filteren, en niet een getal..... Ik word daar zo bedroefd van :o En ik ben zo graag :D

Maar alle gekheid op een stokje: daar zat een deel van het probleem. Verder moet je natuurlijjk ook de brongegevens van je grafiek aanpassen, anders vind je de filtering daar niet in terug.
Bijgaand een werkend voorbeeeld. overigens: je hebt in je voorbeelddata slechts gegevens van één jaar zitten; dat werkt natuurlijk ook niet lekker als je verschillen wilt zien tussen de jaren ;)
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan