Doorlopend formulier filteren en invullen

Status
Niet open voor verdere reacties.

EGeen

Gebruiker
Lid geworden
21 mrt 2008
Berichten
84
Goedenavond,

Toch maar weer een poging om Access onder de knie te krijgen. De cursussen op het forum doorgelezen. De tabellen zijn grotendeels allemaal gemaakt en ook de relaties zijn "klaar". Het maken van formulieren is iets dat mij steeds nekt. Momenteel een doorlopend formulier met "meerdere items" voor de tabel Sub-Categoriën. Relatie gemaakt als onderstaand screenshot. Lay-Out zou ik willen maken ongeveer zoals andere screenshot.

Wat is de bedoeling?
- Dat de huidige lijst van sub-categoriën wordt weergegeven voor de Categorie die wordt geselecteerd in de keuzelijst.
- Dat onderaan de gegeven lijst van sub-categoriën een nieuwe categorië kan worden ingevoerd. (of eventueel op een andere plek in het formulier)

Is er iemand die mij een zetje (of stevige duw :o) in de goede richting kan geven?

Daarnaast nog een korte vraag: Ik heb nu enkele malen gezien dat iemand een formulier maakt op basis van een query ipv op (meerdere) tabellen. Wat is hiervan de reden?

Bijgevoegd ook het overzicht van al mijn tabellen en relaties.

Formulier.JPGRelaties.JPG
 

Bijlagen

  • Relaties 2.JPG
    Relaties 2.JPG
    97,2 KB · Weergaven: 127
Ik weet niet of het een zetje of een duw is, maar ik zou je formulier weggooien of ombouwen, maar in ieder geval op een andere leest schoeien. Het kan namelijk veel simpeler, en simpel is lijkt mij altijd te prefereren boven ingewikkeld.
Om te beginnen: de relatie tussen tblCategorieën en tblSubCategorieën is prima, en op basis daarvan kun je heel simpel een formulier maken met tblCategorieën als Recordbron. Op dit formulier sleep je dan de tabel tblSubCategorieën, en je bent gelijk klaar: nu zie je in het subformulier de records die bij de geselecteerde Categorie horen. Sterker nog: doordat de twee aan elkaar gekoppeld zijn, kun je probleemloos net zo veel subcategorieën toevoegen als je wilt, en je hoeft daar helemaal niks voor te doen! Gebruik desnoods in de koptekst van het hoofdformulier een keuzelijst met invoervak waarin je snel een categorie kunt opzoeken, maar meer heb je niet nodig.

Nu de andere vraag:
Daarnaast nog een korte vraag: Ik heb nu enkele malen gezien dat iemand een formulier maakt op basis van een query ipv op (meerdere) tabellen. Wat is hiervan de reden?
Een formulier baseer je op één tabel, of op een query. Het is onmogelijk om een formulier te baseren op meerdere tabellen. Zodra je dat doet, werk je namelijk altijd met een query. Mijn antwoord hierboven gebruikt de tabel, en daar hoef je dus geen query voor te maken. Wat is dan de reden van jouw vraag? Ik vermoed dat je in de war bent geraakt door de knop met de 3 puntjes achter <Recordbron>. Zodra je aan die ene tabel niet genoeg hebt, en op die knop klikt, begin je met het maken van een query. Die herken je doordat de Recordbron dan begint het SELECT. Dat werkt prima, en in beginsel net zo goed als dat je een query die je in het Queryvenster hebt gemaakt. Met één verschil: met een opgeslagen query (en dit geldt ook voor één tabel als bron) kun je met de wizard Keuzelijst een keuzelijst maken om records te zoeken binnen het formulier. Als je de wizard start, krijg je i.p.v. 2 dan 3 opties. En die derde optie is best interessant.
Als je dus een formulier hebt gemaakt met een Recordbron op basis van een SELECT statement, kun je niet van die optie gebruik maken. Zodra je diezelfde query na het maken/bewerken opslaat, en vervolgens dus de opgeslagen query gebruikt, heb je de mogelijkheid wel. Het is dus veel handiger om ofwel één tabel, ofwel een opgeslagen query als basis te gebruiken. Heb je de zoekfunctie niet nodig, dan maakt het uiteraard niet uit. Bovendien kun je nog steeds een keuzelijst maken om mee te zoeken, maar dan zul je de code zelf moeten inkloppen. Nu doet Access dat voor je!
 
Vervolg

Dank je wel voor het uitgebreide antwoord. Heb al wel door dat ik de basis ook nog niet goed beheers(of dat ik meteen te moeilijk wil)
De reden dat ik zo'n doorlopend formulier gebruikte was de uitstraling. Ik vond dat mooier dan een gegevensblad.
Ik ben met het formulier opnieuw begonnen op ongeveer de wijze zoals u dat zei. Echter het slepen voor een subformulier lukte niet, dit heb ik dus met de hand gedaan. (Wat mij vreemd was, aangezien het me eerder wel lukte).

Nu ben ik zover als in het screenshot. Categorie "verbandmiddelen" heeft ID "5". Dus dat lukt. Echter bij het invoeren van een nieuwe subcategorie zorgt deze niet voor het automatisch invullen van de CategorieID. Nu kan het vast met veel proberen doormiddel van VBA, maar is dit niet iets wat het formulier automatisch behoord te doen?

Ik ben maar bij dit (makkelijke)formulier begonnen als start om alsmde mijn kennis op te bouwen. Zoals te zien in het relatieoverzicht wordt het nog een hele kluif voor me.

SubCat.JPG
 
De reden dat ik zo'n doorlopend formulier gebruikte was de uitstraling. Ik vond dat mooier dan een gegevensblad.
Je kunt ook een subformulier op dezelfde manier naar het hoofdformulier slepen, en dan werkt het subformulier op exact dezelfde manier. Enige eis: het koppelveld moet in het subformulier aanwezig zijn. Zelf gebruik ik ook zelden het gegevensvenster, want dan kun je (bij wijze van spreken) net zo goed in de tabel werken. Een formulier kun je uiteraard vele malen mooier maken. Lukt het niet de eerste keer: gewoon nog een keer proberen! Het formulier uit het eerste plaatje is niet bruikbaar vanwege de koptekst met de nutteloze keuzelijst. Wellicht moet je die nog een beetje versimpelen.

Echter bij het invoeren van een nieuwe subcategorie zorgt deze niet voor het automatisch invullen van de CategorieID.
En dat riekt dus naar de vorige situatie. Je (nu nog hoofd)formulier moet je ombouwen naar een correct (a.s.) subformulier. Dat betekent: alle overbodige rompslomp er af, en zorgen dat alle velden van [tblSubCategorieën] er in zitten, inclusief het veld [CategorieID]. Je hoofdformulier moet gekoppeld zijn aan de tabel [tblCategorieën], en beide velden moeten er op staan. Dan gaat het koppelen automatisch, en het invullen ook.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan