Filter van Main form door geven aan Subform

Status
Niet open voor verdere reacties.

RobertJB66

Gebruiker
Lid geworden
2 feb 2022
Berichten
132
Ik heb in frmEECSelectie in de Form Header een knoppen filter systeem gemaakt.
In het Detail deel wordt de data keurig gefilterd.:D

In de code gebeurt dit met onderstaande code. Waarbij sFilter het resultaat van de filter knoppen bevat.

Function FilterUpdate()
Me.Filter = sFilter
Me.FilterOn = True
End Function

In frmEECSelectie heb ik een TAB (page115) op genomen met daarin een subform.
Het filteren lukt wel, maar het resultaat is niet hetzelfde als wat er in Details staat.

Hoe krijg ik het voor elkaar dat de gefilterde data in de SUB hetzelfde is als in Details.:rolleyes:
Mijn doel is om het detaildeel weg te halen en diverse resultaten in Tabs / Subs te zetten.
 

Bijlagen

  • TLE V0.y.accdb.zip
    168,6 KB · Weergaven: 19
Voor zover dit voor een buitenstaander te volgen is, valt me in ieder geval op dat de twee subformulieren niet op dezelfde set van velden gekoppeld zijn.
EECQ_subform is gekoppeld op Locatie;Jaar;Maand;Dag en
EECQ_subform1 is gekoppeld op Locatie;Jaar;Maand;Dag;Lijn_Nr;Batch
 
Peter,

het gaat mij om Subform1 dus de tweede set.
Het filteren werkt op deze manier, maar geeft bij geen of gedeeltelijke filter data een verkeerd beeld.

Is het mogelijk om de Me.Filter = sFilter te gebruiken ook voor het subForm1?

Als ik EECQ_subform1.Filter = sFilter probeer dan rijg ik een fout melding.
 
Laatst bewerkt:
Leg eens uit wat de werkwijze is, want ik word al heel erg moe van alleen al het bekijken van al je code en knoppen. Leg eens uit wat we moeten doen om het te reproduceren.
 
Wat ik graag zou zien is dat de data die nu in het Detail deel staat in een subform die in een TAB staat wordt weergegeven.:D
Deze data is het resultaat van het filteren a.d.v. de knoppen.
 
Ik snap het eigenlijk helemaal niet. Zoals ik zie het staan op beide subformulieren in grote lijnen dezelfde velden als op de subformulieren. Wat dan de toegevoegde waarde is van de subformulieren ontgaat me dan.

Verder vraag ik me af de constructie van hoofd- en subformulier(en) wel kan werken als het hoofdformulier een doorlopend formulier of gegevensblad is. Normaliter gebruik je zo'n constructie bij een 1-op-veel relatie tussen twee tabellen. Op het hoofdformulier staat dan 1 record uit de tabel aan de 1-kant en op het subformulier 0, 1 of meer records van de tabel aan de veel-kant. Hier wil je kennelijk veel records van een tabel koppelen aan veel records van dezelfde tabel. Als je die zin leest weet je al dat dat onzin is en oplevert.
Hier hebben alledrie de formulieren dezelfde tabel recordbron. Een zinloze constructie lijkt me omdat je zoals ik al opmerkte drie keer hetzelfde laat zien.
 
Verder vraag ik me af de constructie van hoofd- en subformulier(en) wel kan werken als het hoofdformulier een doorlopend formulier of gegevensblad is.
Waarom zou dat niet werken? Een enkelvoudig formulier is niet anders dan een doorlopend formulier. Subformulieren die op dezelfde dataset zijn gebaseerd, zijn daarentegen wél een (beetje) onzinnig.
Bovendien heeft TS in zijn tabelement twee subformulieren staan, waarvan 114 gewoon dezelfde records laat zien als het hoofdformulier. Ergo: het filter werkt daar prima. Het tweede (115) kan je dus gewoon weggooien.
 
Ik ben bang dat ik niet duidelijk genoeg ben.

De bedoeling is dat de data bij de Detail weg gaat.
Het is de bedoeling dat er maar één sub formulier is bv die van 115.

De data is er wel maar de data in het subformulier werkt niet hetzelfde als wat bij de Detail staat.
Dat is graag het geen dat ik gefixt zou willen hebben.

Als er geen filters zijn is alle data er.
Als ik een plaats selecteer dan is alle dat die gelijk is aan die plaats naam en zo verder.;)
 
Hoi, ik heb nu niet de tijd om een voorbeeld uit te werken: maar de oplossing zou ik zoeken in de richting: maak een groepsquery voor de totalen die je wil zien en gebruik die als basis gegevensset voor het tweede subformulier.
 
Laat de vraag anders stellen:D

Op het mainform wordt de data met de onderstaande code gefilterd en geupdate.

Me.Filter = sFilter
Me.FilterOn = True

Is het ook mogelijk om het Me. deel te vervangen door de naam van het subform?

Dus als het subform 'EECQsub' heet kan ik dan b.v. EECQsub.Filter = sFilter:confused:

Als ik dit doe zoals ik hier heb beschreven dan krijg ik een foutmelding:eek::eek:.
Is dit wel mogelijk en hoe zou ik dit dan in moeten geven?

Ik heb het geprobeerd met [], (), ('xyz') maar helaas lukt dit mij niet.

Ik zou zeggen dat het moet kunnen gegeven de onderstaande documentatie.
https://learn.microsoft.com/en-us/office/vba/api/access.form.filter(property)
 
verwijzen naar een subformulier:

Me.[Naam controle-element subformulier].Form.Filter = huppeldepup
 
Ook ik werk nu op een tablet en kan even niets uitwerken.
Ik denk dat je meer moet denken aan het aanpassen van de recordbron van het subformulier. Iets in de trant van:
Me!naamsubform.Form.RecordSource = "SELECT * FROM FROM EECQ WHERE " & sFilter
Controleer met Debug.Print "SELECT * FROM FROM EECQ WHERE " & sFilter wat er precies opgebouwd is.

Verder denk ik dat je hoofd- en subformulier niet hoeft te koppelen in dit geval.
 
De data in een sub formulier weergeven o.b.v. de filter settings werkt.:D

Nu heb ik de volgende uitdaging.:p
Ik zou graag een moderne Chart invoegen die o.b.v. deze zelfde filter settings de grafiek weergeeft.
Wat ik zie, is dat ik de grafiek naar een Query koppel, dat is geen probleem echter hoe laat ik deze Query dan reageren op de sFilter gegevens uit de eerdere post van deze draad:rolleyes:
 
Een grafiek is niets anders dan een formulier, en kun je op dezelfde manier verversen. Maar grafieken maken in Access? Ik raad het niemand aan. Maak grafieken via Excel, dat doet dat veel beter.
 
@AccessGuru,

Bedoel jij hiermee vanuit Access de filterdata door te geven aan Excel en dan Excel de grafiek te laten maken en deze dan in een form van Access weer te geven:rolleyes:.
Dat zou zeker een mogelijkheid zijn. Ik heb echter geen idee waar ik dan zou moeten beginnen:eek:
 
Nee, de complete grafiek in Excel maken en daar houden. De aansturing kan je gewoon vanuit Access maken. Al kan je best een grafiek plakken in een Access formulier. Aan de andere kant: als je tevreden bent over de grafiek die je al hebt gemaakt, dan zou ik daar bij blijven. Alleen dan dus de Recordsource verversen.
 
Team,

Ik blijf deels met het grafiek probleem zitten.:eek::eek:

De grafiek update maar laat niet altijd de juiste gegevens zien. Met de juiste gegevens bedoel ik dat als de query 10 regels laat zien dan laat de grafiek maar 3 punten zien.

Ik heb mijn app bijgesloten en heb een hoop delen weggehaald zodat het niet te complex wordt, bovendien heb ik bij de code de delen die zorgen voor het filter werk helemaal boven aangezet.
Dit om nodig scrollen door de code te voorkomen.

Ik heb het vermoeden dat het probleem erin zit dat de grafiek alleen juist wordt weergegeven als alle link velden zijn ingevuld.
Als er één filter veld ontbreekt dan wordt de grafiek niet juist weergegeven.

Start frmEECSelectie:)

Selecteer ik in Batch RJB18082022 dan geeft de grafiek alle 7 data punten weer die ook in de tabel erboven worden weergegeven.

De knop onder de Locatie is de wis filter knop :D

Selecteer ik bv "Volendam"als locatie dan laat de tabel 3 regels zien, echter de grafiek laat alleen de 4 data punten zien van maand 4 en dag 22.

Heeft iemand een idee hoe ik de grafiek hetzelfde kan laten weergegeven wat ook in de tabel staat:eek:
 

Bijlagen

  • TLE V0.f.accdb.zip
    469,3 KB · Weergaven: 13
Heeft iemand een idee hoe ik de grafiek hetzelfde kan laten weergegeven wat ook in de tabel staat:eek:

Ik heb zo snel niet kunnen vinden hoe en waar je de rijbron van de grafiek bijwerkt, maar het lijkt mij het meest logisch dat op dezelfde plaats te doen als waar je het (sub)formulier filtert. Naar aanleiding van je vraag had ik al even wat zitten knutselen. Ik wist toen natuurlijk niet wat je precies in de grafiek wilde zien. Daar heb ik zelf maar wat voor verzonnen: "aantal EECQ regels per locatie".
De functie FilterUpdate paste ik als volgt aan:
Code:
Function FilterUpdate()

    Me.Filter = sFilter
    Me.FilterOn = True


    If sFilter = "" Then
        Me.Grafiek.RowSource = "SELECT Locatie, Count(*) AS Aantal FROM EECQ GROUP BY Locatie"
    Else
        Me.Grafiek.RowSource = "SELECT Locatie, Count(*) AS Aantal FROM EECQ WHERE " & sFilter & " GROUP BY Locatie"
    End If


End Function

Let op: ik heb de subformulieren eraf gegooid, omdat ik het nut daar van niet zag in vergelijking met een doorlopend hoofdformulier.

De code onder de wisknop vulde ik aan met:
Code:
Me.Grafiek.RowSource = "SELECT Locatie, Count(*) AS Aantal FROM EECQ GROUP BY Locatie"
 

Bijlagen

  • TLE V0.ps.zip
    175,9 KB · Weergaven: 13
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan