Keuzelijst met invoervak

Status
Niet open voor verdere reacties.

JeffVDB

Gebruiker
Lid geworden
25 aug 2009
Berichten
106
Ik zit met het volgend probleem:
ik heb een tabel tblBestelling, met een veld Mat, gelinkt aan tblMateriaal.
Nu wil ik in een doorlopend formulier een bestelling plaatsen met telkens een invoervak Mat voor het welk materiaal besteld wordt en ook de hoeveelheid. So far so good.
Nu is mijn vraag: kan ik bijvoorbeeld bij de "nde" keuze op het formulier in het veld [Mat] alleen de materialen laten zien die nog niet besteld zijn? Ik zie door het bos de bomen niet meer.
Thanks,

Jeff
 
Het antwoord op de vraag is: Ja, dat kan. Maar je zult de keuzelijst dan dynamisch moeten bijwerken. Dat kan door een filter in de Recordbron van de keuzelijst te maken die bij elk nieuw artikel wordt bijgewerkt, of door de Recordbron van de keuzelijst met VBA/SQL op te bouwen. Het resultaat is dan hetzelfde.
 
Je wilt blijkbaar alleen geholpen worden door mensen die weten hoe je een formulier weer zichtbaar maakt :). Ik zie in je subformulier wel een rare constructie, en je hoofdformulier snap ik eigenlijk ook niet. Leg eens uit wat je bedoeling is, want je formulier [Bestelling] is niet gebaseerd op de tabel [Bestelling] maar op de tabel [Reizen], en dan slaan mijn hersenen al een beetje op tilt van de verwarring.
 
Michel,

Iedereen op zijn niveau. Waarom tblReizen : omdat voor elke reis de verantwoordelijke materiaal moet bestellen om mee te nemen. Dus link ik de tabel reizen aan de tabel bestelling. Is dit verkeerd? De verantwoordelijke moet achteraf toch kunnen zien welk materiaal hij op welke reis besteld heeft.
Het formulier is enkel een voorbeeld. De originele db bevat meerdere knoppen die de bestelling volgens categorie rangschikt (Standaard, medisch, spel en technisch). Elke categorie komt dan in een apart subformulier. Ik wil enkel het principe begrijpen, daarom alleen de knop Standaard en subformulier standaardbestellingen (Code = ST). De cijfertjes op de witte achtergrond zijn de links naar een andere tabel (ReisID, BestelID en MatID) zijn dan ook in het normale scherm onzichtbaar. Alleen weet ik niet hoe de keuze van artikels in de tweede en volgende lijnen, kan beperken tot die artikels die nog niet besteld zijn.
Ik hoop dat het iets duidelijker is. Ik sta altijd open voor verbeteringen.
 
Dus link ik de tabel reizen aan de tabel bestelling. Is dit verkeerd?
Je relaties zijn prima, daar zit het probleem niet. Maar je formulier [frmMateriaalKeuze] zou in mijn optiek [frmReizen] moeten heten, omdat je daar je reisgegevens op bijhoudt, niet je materiaalkeuzes. Dat doe je op je subformulier namelijk. Probleem is ook, dat je het hoofdformulier niet op [tblReizen] hebt gebaseerd, maar op een enorme query, terwijl je op je hoofdformulier toch maar 3 veldjes gebruikt die allemaal uit tblReizen komen. Daardoor heeft je hoofdformulier nu 5 identieke records voor reisID 5, terwijl er dus maar één reis is: reisID 5.
Volgende probleem zit 'm dan in het subformulier, en dat is min of meer hetzelfde: teveel tabellen in de Recordbron. En, en dat is een veel groter probleem, je gebruikt zowel een koppeling Hoofdveld-Subveld als een criterium. Het criterium moet sowieso weg, want je subformulier wordt al automatisch op het hoofdformulier gefilterd. Dan doen in ieder geval je formulieren het weer goed.
Volgende punt is dan natuurlijk het filter aanpassen in de keuzelijst.
 
Geen idee of je zelf al verder bent gekomen, maar ik heb wat aanpassingen gedaan in je voorbeeldje, en bij mij werkt het. Je zult zien dat het allemaal via VBA is opgelost, want dat is de enige mogelijkheid. Verder heb ik die gruwelijke opzoeklijsten in tabellen vervangen door normale tekstvakken. Als je mijn stijl een beetje kent, dan weet je dat ik in een tabel altijd wil kunnen zien wat er is opgeslagen. Met keuzelijsten in tabellen ga je je vroeg of laat enorm in de vingers snijden, en bovendien: wat is het voordeel? Als het goed is, kijkt er nooit iemand in de tabel zelf maar doe je alles via (dan wel met keuzelijsten uiteraard) het formulier.
De code is veel te uitgebreid om hier te plakken, dus bekijk hem eens op je gemakje zou ik zeggen.
 

Bijlagen

Octafish,

Hartelijk bedankt voor je moeite. Het werkt inderdaad.
Het enige probleem dat ik nog ondervind is dat bij elke nieuwe invoer van een bestelling, de vorige velden allemaal blanco worden gezet totdat er een hoeveelheid voor de nieuwe bestelling gekozen wordt. Is dat normaal?
Ik kan mij voorstellen dat de toekomstige gebruiker van de db hier heel verwonderd gaat reageren.
 
Ik heb alleen naar de structuur gekeken voor het subformulier. Die is lastig, omdat je niet bestaande records kunt laten zien en tegelijkertijd de keuzelijst kunt filteren op eerder gekozen artikelen. In je subformulier staat natuurlijk maar één keuzelijst in de detailsectie, die slechts herhaald word met het aantal records dat je kunt zien in het subformulier. In concreto komt het hier op neer dat als je artikel A selecteert, en er vervolgens voor zorgt dat Artikel A niet meer gekozen kan worden, je Artikel A ook niet meer ziet in de eerder ingevoerde record. Je hebt dus één keuzelijst, die wel 2 verschillende Rijbronnen moet hebben: één die alle artikelen toont, zodat je kunt zien wat je gekozen hebt, en één die de gefilterde lijst laat zien. Zodra de laatste actief is, zie je in de eerder toegevoegde records (tijdelijk) niets meer, tot je na het bijwerken van het record de eerste Rijbron weer instelt. En dat is dus de hele techniek er achter.
Dat heeft verder overigens niks te maken met het maken van een nieuwe bestelling; die bestaat bij het aanmaken per definitie uit een leeg subformulier, want je kunt onmogelijk een nieuwe bestelling maken waar al artikelen in zitten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan