Gebruik Query om selectie mogelijkheden aan te passen

Status
Niet open voor verdere reacties.

RobertJB66

Gebruiker
Lid geworden
2 feb 2022
Berichten
132
In de bijlage mijn test dashboard.
Mijn doel is om in het Form EEC_Selectie het zo te maken dat als er op de knop 2022 gedrukt wordt de alleen de selectie knoppen van die maanden en dagen waarvan het data beschikbaar is.
Als dit voor Maand en dag werkt, mag het geen probleem voor mij zijn om het ook voor de andere knoppen te laten werken.

De delen die worden gebruikt zijn alleen:

Form: EEC_Selectie
Queries: EECQ
VBA: Modules1, Form_EEC_Selectie

Ik verneem graag hoe ik dit kan oplossen. De update zou er ook voor moeten zorgen dat de tabel in het form de selectie weergeeft:confused:

alvast mijn dank.
 

Bijlagen

  • TLE_V0.B.accdb.zip
    1 MB · Weergaven: 20
Goedemorgen,

Om eerlijk te zijn begrijp ik niet waarom je zoveel knoppen nodig hebt om alleen al een bepaalde datum te kunnen kiezen. Als ik het goed zie heb je daar max. 6+12+31 knoppen voor nodig.
Ik heb even een nieuw formulier gemaakt met daarin 4 keuzelijsten met invoervak. Drie keuzelijsten werken samen door achtereenvolgens Jaar, Maand en Dag te kiezen (dat zijn nog 3 handelingen). Je kunt er ook voor kiezen om gelijk een datum uit de lijst te kiezen (dat is slechts 1 handeling).
Het kan ook zijn dat ik het helemaal verkeerd zie met die knoppen.

Misschien helpt je dit een beetje, wellicht zijn er betere oplossingen.

Succes.

Gr. Jan
 

Bijlagen

  • TLE_V0.B.zip
    970,1 KB · Weergaven: 19
Goedemorgen,

Om eerlijk te zijn begrijp ik niet waarom je zoveel knoppen nodig hebt om alleen al een bepaalde datum te kunnen kiezen. Als ik het goed zie heb je daar max. 6+12+31 knoppen voor nodig.
Ik heb even een nieuw formulier gemaakt met daarin 4 keuzelijsten met invoervak. Drie keuzelijsten werken samen door achtereenvolgens Jaar, Maand en Dag te kiezen (dat zijn nog 3 handelingen). Je kunt er ook voor kiezen om gelijk een datum uit de lijst te kiezen (dat is slechts 1 handeling).
Het kan ook zijn dat ik het helemaal verkeerd zie met die knoppen.

Misschien helpt je dit een beetje, wellicht zijn er betere oplossingen.

Succes.

Gr. Jan

Dank je wel.
Ik wil graag met de knoppen een interface maken die er uitziet wat gedaan kan worden met Excel slicers.:D
Ik denk echter dat met het geen dat jij heb gemaakt ik al snel wat verder kan komen om min interface te bouwen.:thumb:

Nogmaals dank je wel voor het voorbeeld.
 
En het kan nog zó veel beter :). Mocht je geïnteresseerd zijn in een andere oplossing (beter dus in mijn optiek), dan hoor ik het wel.
 
En het kan nog zó veel beter :). Mocht je geïnteresseerd zijn in een andere oplossing (beter dus in mijn optiek), dan hoor ik het wel.

Dank je wel voor het aanbod. Hoe zou jij het er da uit laten zien?
Ik sta zeker op en voor suggesties.
 
De belangrijkste suggestie: je tabellen zijn heel slecht genormaliseerd. Dat geldt dan bijvoorbeeld voor de (identieke; waarom?) tabellen [dbo_Proben_tab] en [dbo_Proben_intervall_tab]. Als ik 15 velden zie met namen als nt1m t/m nz5a, of w01 t/m w20 dan gaan alle alarmbellen af en staat de hele straat hier aan de deur om te vragen wat er aan de hand is. Dat kan echt niet. Het zijn allemaal numerieke velden, met meestal de waarde 0 er in en slechts een paar gevuld per record. Dat moet m.i. echt genormaliseerd worden naar een gekoppelde tabel met slechts een paar velden en waarin je in het ene veld de naam opslaat (nt1m, nz2a, wo3, w012 etc) op het moment dat je een waarde hebt (gemeten of wat je dan ook doet). Dus als je 7 metingen hebt, staan er in die koppeltabel 7 records. En niet, zoals jij nu hebt, zo'n 40+. Tenzij er een procedure is die vereist dat je altijd alle waarden in alle records in moet vullen. Maar die zie ik niet in jouw data.

Wast betreft je vraag: filteren doe je m.i. ongeveer op de manier zoals jhdw het voorstelt, maar dan een stuk minder ingewikkeld. Hij gebruikt Tempvars, en dat is echt niet nodig. Nog afgezien van het feit dat hij in de procedure de complete set tempvars verwijdert, wat een beetje onzin is als je op andere plekken óók tempvars gebruikt. Die ben je dan namelijk ook gelijk kwijt. Zou ik dus nooit zo doen. In mijn voorbeeldje wordt er een stuk simpeler gefilterd, zoals je kunt zien. Aan jou de keuze :).
 

Bijlagen

  • TLE_V0.B_octa.zip
    933 KB · Weergaven: 23
De belangrijkste suggestie: je tabellen zijn heel slecht genormaliseerd. Dat geldt dan bijvoorbeeld voor de (identieke; waarom?) tabellen [dbo_Proben_tab] en [dbo_Proben_intervall_tab]. Als ik 15 velden zie met namen als nt1m t/m nz5a, of w01 t/m w20 dan gaan alle alarmbellen af en staat de hele straat hier aan de deur om te vragen wat er aan de hand is. Dat kan echt niet. Het zijn allemaal numerieke velden, met meestal de waarde 0 er in en slechts een paar gevuld per record. Dat moet m.i. echt genormaliseerd worden naar een gekoppelde tabel met slechts een paar velden en waarin je in het ene veld de naam opslaat (nt1m, nz2a, wo3, w012 etc) op het moment dat je een waarde hebt (gemeten of wat je dan ook doet). Dus als je 7 metingen hebt, staan er in die koppeltabel 7 records. En niet, zoals jij nu hebt, zo'n 40+. Tenzij er een procedure is die vereist dat je altijd alle waarden in alle records in moet vullen. Maar die zie ik niet in jouw data.




Wast betreft je vraag: filteren doe je m.i. ongeveer op de manier zoals jhdw het voorstelt, maar dan een stuk minder ingewikkeld. Hij gebruikt Tempvars, en dat is echt niet nodig. Nog afgezien van het feit dat hij in de procedure de complete set tempvars verwijdert, wat een beetje onzin is als je op andere plekken óók tempvars gebruikt. Die ben je dan namelijk ook gelijk kwijt. Zou ik dus nooit zo doen. In mijn voorbeeldje wordt er een stuk simpeler gefilterd, zoals je kunt zien. Aan jou de keuze :).

Dank je wel voor input.

Jij hebt gelijk de velden, er zijn te veel velden die geen of data bevatten. Ik kan hier helaas niets aan doen, dit komt uit de historie. IN mijn query laat ik deze velden ook buiten beschouwing en neem ik alleen de velden mee die er voor deze applicatie toedoen.

Ik begrijp dat de drop-down delen een eenvoudig systeem zijn om data te filteren.
Wat ik echter probeer te realiseren is een systeem met knoppen, noem het gek en vraag waarom, het is nu eenmaal het geen dat ik graag zo zie. De interface naar de gebruiker ziet er voor mij net even lekkerder uit.
Met het geen dat jullie hebben aan gedragen kan ik zeker verder. Wat ik graag zou weten is hoe ik vanuit VBA een query kan uitvoeren.

Het doel is dat als er een jaar, maand, dag, batch, locatie of product geselecteerd wordt dat de knoppen zich dan direct aanpassen.
Er is geen noodzaak om en standaard volgorde van selectie aan te houden.

De selectie van een groep verwijst naar de query, de query wordt uitgevoerd en de data past zich aan zoals bij jullie voorbeeld echter ook de data van de knoppen passen zich aan.

Stel dat er in 2022 voor de maand januari alleen data is voor 1 t/m 7 dan zijn allen de knoppen van die dagen zichtbaar. gelijk aan wat bij jullie gebeurt allen dan in knoppen en niet in drop-down.

Als jullie mij hiermee kunnen helpen zou dat heel prettige zijn. :D
 
Ik zou een stuk gelukkiger zijn als je van de quote knop af zou blijven…. En had ik geweten dat je die nu wéér zou gebruiken, dan had ik een berichtje van maar één regel gemaakt. Totale berichten quoten is overbodig en onnodig. Please, niet meer doen! Dit:

Wat ik echter probeer te realiseren is een systeem met knoppen, noem het gek en vraag waarom, het is nu eenmaal het geen dat ik graag zo zie. De interface naar de gebruiker ziet er voor mij net even lekkerder uit.

Er is geen noodzaak om en standaard volgorde van selectie aan te houden.
Is een nuttige quote, want daar wil ik het toch even over met je hebben. Je bent namelijk gek als je dit meent. Een formulier met E34 overdaad aan knoppen ziet er niet ‘lekkerder’ uit, en is al helemaal niet gebruiksvriendelijker. Persoonlijk sta ik niet te popelen (zelfs niet als het goed betaald zou zijn) om onzinnige formulieren te bouwen waar gebruikers gek van worden. Logische oplossingen? Kom maar op :).

Stel dát iemand je er mee op weg helpt (en ik heb de noodzakelijke technieken beschreven in de Access cursus in de Handleidingen sectie dus de informatie is beschikbaar) dan krijg je toch een heel lelijk formulier. Je hebt in een maand maximaal 31 dagen. Als er maar voor een paar dagen data is (1, 4, 6, 11, 15 en 22 bijvoorbeeld) en je maakt de overige knoppen onzichtbaar, dan krijg je dus een heel lelijk formulier. Zelf zou ik de dagen/maanden/jaren zonder data uitschakelen, maar wel zichtbaar laten. Vind ik toch echt mooier.

en in willekeurige volgorde werken? Wat heeft dat voor voordelen? Dat je eerst een dag selecteert of een maand, en dan vervolgens alle records van die dag of maand ziet? Wat heeft het voor zin dat je alle records ziet van de 12e dagen? Zinloze informatie. Altijd top-down filteren. Anders krijg je onzinnige selecties.

En wat bedoel je met:
De selectie van een groep verwijst naar de query, de query wordt uitgevoerd en de data past zich aan zoals bij jullie voorbeeld echter ook de data van de knoppen passen zich aan.

Volgens mij doet het andere voorbeeld dat al, en toont mijn voorbeeld aan dat dat nergens voor nodig is: je kunt gewoon de records op het formulier filteren.

Zoals je vermoedelijk al begrepen hebt, help ik je graag verder als je je db op een slimme manier wilt bouwen. Ik sta niet te popelen om tijd te steken in zinloze oplossingen, die a) alleen met veel programmeren te bereiken zijn en b) de functionaliteit en gebruiksvriendelijkheid van het systeem slopen. Dan heb je aan mij de verkeerde helper. En als ‘leerproject’ kun je ook betere voorbeelden bedenken.
 
RobertJB66,

Omdat je voor gek wordt uitgemaakt en omdat het niet zoveel werk is om het te maken, hierbij en voorbeeld met knoppen.

(versie aangepast)

Bekijk bijlage METKnoppen2.zip

Groetjes,
 

Bijlagen

  • METKnoppen.rar
    816,2 KB · Weergaven: 19
Laatst bewerkt:
@pletter: TS noemt zichzelf gek. Ik quote hem alleen maar. En jij zit nu in dezelfde categorie door hem het werk uit handen te nemen. Of je hebt niks te doen, dat kan natuurlijk ook :).
 
AccessGuru

Vragensteller zegt: "Wat ik echter probeer te realiseren is een systeem met knoppen, noem het gek en vraag waarom"

Geef er maar een draai aan, vragensteller zegt niet dat hij gek is,

maar AccessGuru zegt: "Is een nuttige quote, want daar wil ik het toch even over met je hebben. Je bent namelijk gek als je dit meent."

Gelukkig lopen er meer gekken buiten rond, die binnen zitten zijn de ergste.


Groetjes,
 
Allemaal bedankt voor jullie oplossingen.

Ik ben niet gek maar prettig gestoord :d:d
 
Prettig gestoord mag natuurlijk. Overigens werkt de oplossing van pletter bij mij niet correct. De mijne uiteraard wel :).
 
er staat in #9 een andere versie. MetKnoppen2.zip

Groetjes,
 
Laatst bewerkt:
Het gaat al aardig in mijn versie. Ik heb jouw (Pletter) opzet gebruikt

Ik heb het gevoel dat het voor mij handiger is als ik de filter parameters doorgeef aan de EECQ Query i.p.v. het te doen in het formulier zelf. Ik wil het graag via deze Query laten lopen zodat het ook eenvoudig is om de gefilterde data te gebruiken in grafieken en rapporten.

Het probleem waar ik echter tegen aan loop is dat de query een resultaat laat zien als in het huidige voorbeeld alle 3 de delen zijn geselecteerd(jaar, Maand en Dag) en niet als maar één of twee van de selecties zijn gedaan.
De data die wordt weergegeven zit dan ook in een subform.

Ik heb in de EECQ een selectie Criteria opgenomen, echter hij geeft mij niet het gewenste resultaat. Wat doe ik hier fout :confused:
 

Bijlagen

  • TLC Test.zip
    290 KB · Weergaven: 14
@RobertJB66


Maak een kopie van Query: EECQ
Geef die de naam: UpEECQ

Maak een Function in het knoppen formulier. Die is gemaakt in de base die staat in #9.
Maak drie knoppen in het formulier: Jaar, en Maand, en Dag.
Bij klikken krijg je dan: UpdateQueryJMD(1) voor Jaar, UpdateQueryJMD(2) voor en Maand, UpdateQueryJMD(3) voor en Dag.

Code:
Function UpdateQueryJMD(y As Integer)
    Dim db As dao.Database
    Set db = CurrentDb
    Dim qdb As dao.QueryDef
    Set qdb = db.QueryDefs("UpEECQ")
        Select Case y
            Case 1
                qdb.SQL = "Select * From [EECQ] WHERE [Year]= " & sJaar & ""
            Case 2
                qdb.SQL = "Select * From [EECQ] WHERE [Year]= " & sJaar & " and [Month]= " & sMaand & ""
            Case 3
                qdb.SQL = "Select * From [EECQ] WHERE [Year]= " & sJaar & " and [Month]= " & sMaand & " and [Day]= " & sDag & ""
        End Select
End Function


Groetjes,
 
@PLetter,

Dank je wel ik was ook tot die conclusie gekomen. :D
Hoe krijg ik het voor elkaar dat als ik een Wis Filters knop in druk alle filters gewist worden en het systeem de ongefilterde data laat zien?

Ik heb al diverse zaken geprobeerd, maar niets lijkt te werken. Het zal ongetwijfeld iets simpels zijn, maar ik kan er niet opkomen:rolleyes:
kan jij mij de oplossing aangeven. Als iemand ander die heeft, is dat natuurlijk ook goed ;)
 
@RobertJB66

Er zijn twee filters in je formulier.

Om het filter van het formulier uit te zetten zodat je alle records ziet gebruik je:

Me.Filter = ""
Me.FilterOn = False

of

DoCmd.RunCommand acCmdRemoveFilterSort

Om alle records te laten zien van de Query UpEECQ zal je er een Case bij moeten maken die een Select maakt zonder een WHERE voorwaarde.

Groetjes,
 
@PLetter,

Dankje wel hiervoor.
Het filter is hiermee uit wat mij echter nog niet lukt, is dat als het filter uit staat dat de lijst van alle records dan ongefilterd wordt weer gegeven.:eek:

Ook bij het (her)starten laat de lijst de resultaten van het laatste filter zien.

Voor het gemak heb ik het geen dat ik heb gemaakt bijgesloten.
Het gaat om de code achter "frmEECSelectie" Reste_Filters_Click() wist de selecties en zou de lijst zonder filters moeten weergeven :(

bij voorbaat dank.
 

Bijlagen

  • TLC Test.zip
    290,9 KB · Weergaven: 11
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan