Hoe Selecteren van meerdere records tegelijk via invoerform

Status
Niet open voor verdere reacties.

Orcaa

Gebruiker
Lid geworden
1 nov 2010
Berichten
125
Heb in access 2007 een simpele database met 1 tabel staan
in tabel staat
-vriezers
-serienaam
-reknaam
-plaatnaam
-geleend (ja/nee)
-opslagdatum
-uitleendatum

Nu gaat het om de platen, die staan in een rek en een rek staat in een vriezer. In een rek kunnen 20 platen en in vriezer kunnen 10 rekken.
Nu horen bepaalde platen bijelkaar tot een serie .
Heb hieronder een voorbeeld staan, bv
Vriezer Serienaam reknaam plaatnaam geleend
A Serie1 rek1 plaat1 nee
A Serie1 rek1 plaat2 nee
A Serie1 rek1 plaat3 nee
A Serie1 rek2 plaat4 nee
A Serie1 rek2 plaat5 nee
A Serie1 rek2 plaat6 nee
A Serie1 rek3 plaat7 nee
A Serie1 rek3 plaat8 nee
A Serie1 rek3 plaat9 nee
A Serie2 rek1 plaat10 ja
A Serie2 rek1 plaat11 ja

Wat ik nu wil is als er een plaat uit de vriezer gehaald word dan moet er in geleend ja komen te staan. en als plaat terug in vriezer gaat moet er nee in geleend komen te staan.
Alleen zou je nuu iedere plaat die je uit vriezer haalt apart aan moeten klikken als geleend of niet. Wat ik wil is de mogelijkheid via een form om te kiezen dat ik een plaat "leen" of een heel rek of een hele serie en dat dan tegelijk alle platen uit een rek als geleend komen te staan of van een hele serie als geleend komen te staan.

Weet iemand hoe je dit kan doen en heb je daar voor mij een voorbeeld van

Alvast bedankt voor de hulp
 
Wat dacht je er van als je de database eens netjes ging opbouwen? Als je naar je verhaal kijkt, en je voorbeeldgegevens, dan zit daar een serie afhankelijkheden in, die je eerst moet verhelpen voordat je überhaupt aan de oplossing van jouw vraag gaat denken.
Nu gaat het om de platen, die staan in een rek en een rek staat in een vriezer. In een rek kunnen 20 platen en in vriezer kunnen 10 rekken.
Nu horen bepaalde platen bijelkaar tot een serie.
Die afhankelijkheden zorgen voor data redundantie. Maak in ieder geval aparte tabellen voor de Vriezers, voor de Rekken, en voor de Platen. Maak vervolgens koppeltabellen voor Vriezer_Rek, en Rek_Plaat en zet daarin respectievelijk VriezerID en RekID, en RekID met PlaatID. Als je de tabellen vult, krijg je in Vriezers één record voor elke vriezer (in plaas van nu 11 in je voorbeeld), en in de tabel Rek één record voor elk rek (i.p.v. nu 3) etc. Op basis van die tabellen kun je dan formulieren met subformulieren maken. Je hoofdformulier is dan Vriezer, met als Subformulier Rekken, dat weer een subformulier Platen heeft. Op elk formulier kun je dan knoppen en/of selectievakjes maken waarmee je alle platen, alle rekken, enkele platen of enkele rekken vult.
Ik heb daar zelf geen voorbeeldje voor (veel te specifiek probleem voor mij) maar als je de cursus Acces uit de handleiding naleest, leer je in ieder geval wat meer over Normaliseren, het proces dat je eerst moet uitvoeren wil je deze db bruikbaar maken.
Als je een voorbeeld hebt, en je komt er niet uit, dan kun je dat uiteraard posten, en dan zijn we graag bereid om je te helpen. Maar ik ga 'm niet voor je maken :)
 
Hallo Michel,
bedankt voor je reactie. Heb nog geen ervaring met access, maar dat is je wel duidelijk. Ben bezig geweest met het normaliseren en ben tot het volgende gekomen.
Relations_vriezer.JPG
Dit zouden de verschillende tabellen en relaties ertussen zijn. Maar twijfel er wel over omdat ik niet zeker weet of de serienaam ook in een aparte tabel moet.
Elke plaat heeft een unieke naam. Een aantal platen horen tot een serie en de platen worden in rekken opgeslagen. Zo een serie platen kan dus in meerdere rekken staan en de rekken worden weer in een vriezer opgeslagen.

Hopenlijk is dit een beetje duidelijk en kan je mij laten weten of de tabellen en de relaties kloppen

Alvast bedankt,

Hieronder een stukje uit de originele excel sheet.
Vriezernaam Reknaam Serienaam Plaatnaam Opslagdatum Uitgeleend Laatste Uitleendatum
Vriezer_A Rek_01 Serie_A Plaat_01 3/11/2012 nee 12-Oct-12
Vriezer_A Rek_01 Serie_A Plaat_02 3/11/2012 nee 12-Oct-12
Vriezer_A Rek_01 Serie_A Plaat_03 3/11/2012 nee 12-Oct-12
Vriezer_A Rek_01 Serie_A Plaat_04 3/11/2012 nee 12-Oct-12
Vriezer_A Rek_01 Serie_A Plaat_05 3/11/2012 nee 12-Oct-12
Vriezer_A Rek_01 Serie_A Plaat_06 3/11/2012 nee 12-Oct-12
Vriezer_A Rek_01 Serie_B Plaat_07 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_01 Serie_B Plaat_08 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_01 Serie_B Plaat_09 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_01 Serie_B Plaat_10 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_11 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_12 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_13 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_14 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_15 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_16 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_17 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_18 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_19 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_02 Serie_B Plaat_20 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_03 Serie_B Plaat_21 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_03 Serie_B Plaat_22 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_03 Serie_B Plaat_23 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_03 Serie_B Plaat_24 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_03 Serie_B Plaat_25 6/11/2012 nee 29-Nov-12
Vriezer_A Rek_03 Serie_D Plaat_26 12/11/2012 nee 12-Dec-12
Vriezer_A Rek_03 Serie_D Plaat_27 12/11/2012 nee 12-Dec-12
Vriezer_A Rek_04 Serie_D Plaat_28 12/11/2012 nee 12-Dec-12
Vriezer_A Rek_04 Serie_D Plaat_29 12/11/2012 nee 12-Dec-12
Vriezer_A Rek_04 Serie_D Plaat_30 12/11/2012 nee 13-Dec-12
Vriezer_B Rek_04 Serie_D Plaat_31 12/11/2012 nee 13-Dec-12
Vriezer_B Rek_04 Serie_D Plaat_32 12/11/2012 nee 13-Dec-12
Vriezer_B Rek_04 Serie_D Plaat_33 12/11/2012 nee 13-Dec-12
Vriezer_B Rek_04 Serie_D Plaat_34 12/11/2012 nee 13-Dec-12
Vriezer_B Rek_04 Serie_E Plaat_35 1/12/2012 nee 17-Nov-12
Vriezer_B Rek_05 Serie_E Plaat_36 1/12/2012 nee 17-Nov-12
Vriezer_B Rek_05 Serie_E Plaat_37 1/12/2012 nee 17-Nov-12
Vriezer_B Rek_05 Serie_E Plaat_38 1/12/2012 nee 19-Nov-12
Vriezer_B Rek_05 Serie_E Plaat_39 1/12/2012 nee 19-Nov-12
Vriezer_B Rek_05 Serie_E Plaat_40 1/12/2012 nee 19-Nov-12
 
Als je series hebt van platen, die over meerdere rekken worden opgeslagen, en elke plaat kan maar tot één serie behoren, dan is die koppeling inderdaad verkeerd. In de tabel Platen hoef je dan alleen maar een veld SerieID op te nemen, en dat koppel je dan aan de tabel Serie. Je gebruikt alleen koppeltabellen voor meervoudige combinaties. Dus over vriezers kun je zeggen dat ze verschillende rekken kunnen bevatten (één-op-veel relatie) en van een rek kun je zeggen dat één rek in veel vriezers kan voorkomen. Bij je serie is dat niet het geval: één plaat kan maar bij één serie horen, en één serie kan veel platen bevatten. Pas als een plaat bij veel series kan horen, heb je de koppeltabel nodig. Nu niet; nu is het SerieID een eigenschap van de plaat.
 
Bedankt, is duidelijk na je uitleg. Heb de tabel verwijderd en de relaties aangepast. Heb ook nog het veld "opslagdatum " uit de tabel T_serie verwijderd omdat niet altijd de hele serie tegelijk geleverd wordt. Heb het veld "opslagdatum" naar tabel T_Platen verhuisd en "leverdatum" genoemd. Dit is nieuwe plaatje van relaties:
Relations_vriezer_b.JPG

Heb nu de tabellen met data gevuld en heb hier nog een vraag over. Heb nu 3 tabellen (Vriezer, Rekken en Serie) met alleen maar de kolommen ..ID en ..naam
Vraag me nu af, als ik een nieuwe set platen in de database wil zetten en daarna in de vriezer, moet ik dus denk ik een update query maken en dan moeten de velden vriezernaam, reknaam, serienaam, plaatnaam, e.d geupdate worden. Nu staan die gegevens in verschillende tabellen. Hoe doe ik dit dan. Als er een nieuwe serienaam bij komt, kan ik een nieuwe serienaam in de tabel serie invoeren, maar hoe voer ik nu de verbinding tussen de nieuwe plaatnaam en serienaam en reknaam en vriezernaam in.
Moet ik dan in ID nummers van de serienaam, reknaam, e.d invoeren?

Alvast bedankt
 
Als je nieuwe objecten wilt toevoegen, zul je dat van boven af moeten doen. Dus als er een nieuw rek komt, eerst het rek invoeren en dan de rest aanmaken. Want in de koppeltabellen moeten beide gegevens wel bestaan. Wil je nieuwe groepen maken van een rek met platen, dan is dat min of meer handwerk, al kun je wel een formulier maken dat het werk enigszins uit handen neemt.
Wil je records maken in de tabel <Rek_Plaat> omdat er een nieuw rek bij is gekomen, dan zou je dat kunnen doen vanaf een doorlopend formulier op basis van Plaat. (In die tabel moet je overigens nog wel een selectieveldje maken, anders gaat deze oplossing niet werken). In het doorlopend formulier selecteer je dan alle platen die je wilt koppelen, en in een keuzelijst in de koptekst selecteer je het rek. Met een Toevoegquery kun je dan records laten toevoegen in de tabel <Rek_Plaat>, waarbij je dan de geselecteerde plaatrecords met het geselecteerde RekID gebruikt.
In een laatste stap zou ik dan de selectievakjes weer uitzetten, zodat de tabel Plaat schoon blijft.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan