[ACC 2003] Lijst om tabel te selecteren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • schootje
  • Registratie: Januari 2008
  • Laatst online: 08-09 11:04
Beste Tweakers,

Inleiding
Ik loop stage op een basisschool en mij is gevraagd om een database te maken waarin word bijgehouden welke leerlingen uit welke groep welk boek lenen.

Access is de 2003 versie omdat die hier allemaal op het netwerk staan op de pc's en een access 2007 database dan vaak problemen geeft.

Zelf ben ik al aardig op weg want heb wel wat verstand van de basis van Access (03/07),
Maar ik heb het volgende probleem waar ik niet uit kom;

Probleem
Ik heb dus een formulier gemaakt waarin de leerkracht de titel, de auteur, de klas en de leerling kan zetten,
Maar er werd van mij gevraagd of het mogelijk was om eerst in een lijst de groep te selecteren en als je dan de leerling wil selecteren er alleen maar de leerlingen uit die groep staan.

Zelf heb ik voor elke groep een aparte tabel gemaakt met de naam van de leerlingen.
En lijkt het mij dus het handigste dat de 1e lijst (groep) de tabel selecteerd waaruit de 2e lijst (naam) dan de naam van de leerling uit haalt.

Zelf ben ik al aan het proberen geweest en kom ik niet verder en ook niet via google omdat ik ook niet zoveel verstand heb van VB waarmee ik denk dat dit wel mogelijk is.

Alvast bedankt!

M.v.G.
Schootje

Update
Na nog meer zoeken en dingen proberen ben ik al bij het volgende,
In de lijst waar je de groep selecteerd zit de volgende VBA code:
code:
1
2
3
4
If [Groep] = "Groep 5" Then [Uitgeleend aan] = [Groep 5]![Naam leerling]
If [Groep] = "Groep 6" Then [Uitgeleend aan] = [Groep 6]![Naam leerling]
If [Groep] = "Groep 7" Then [Uitgeleend aan] = [Groep 7]![Naam leerling]
If [Groep] = "Groep 8" Then [Uitgeleend aan] = [Groep 8]![Naam leerling]

Groep is de 1e lijst waar je de klas kan kiezen en vervolgens wil ik dus dat die uit de tabel de waarden voor de 2e lijst haalt(Uitgeleend aan) maar het gaat mis met de verwijzingen naar de tabel, dus "= [Groep 5]![Naam leerling]" dus mischien dat iemand hier meer verstand heeft van VBA en mij kan vertellen hoe ik correct kan verwijzen naar een tabel en rij? |:(

[ Voor 25% gewijzigd door schootje op 12-09-2011 14:27 . Reden: Update ]


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 29-07 11:23
Ik wil niet brutaal doen, maar zoals ik in je code zie, klopt je structuur helemaal niet. En ook jij denkt verstand van Access te hebben. Misschien kan je het programma Access bedienen, maar je hebt weinig kaas gegeten van databases. Access is wat dat betreft een vreemde eend in de Office-familie: het programma kunnen bedienen is niet voldoende om het te kunnen gebruiken.

Het lijkt erop dat je voor elke groep een aparte tabel hebt, met daarin de leerlingen. Ik zou dat nooit zo doen.
Je maakt een tabel met leerlingen, en een tabelletje met groepen. Vervolgens verwijs je in je tabel leerlingen naar de juiste groep.
Voor elke verzameling van 'dingen' maak je 1 tabel, elke tabel met een uniek Id (autonummering met sleuteltje)
Dus:
1 tabel met groepen
1 tabel met leerlingen
1 tabel met boekem
1 tabel met leraren
Etc.
En dan nog verschillende koppeltabellen. Bijvoorbeeld: het zou kunnen dat een groep meerdere leraren heeft.

Je belangrijkste koppeltabel, is je tabel waar je de 'uitleningen' registreert. Hierin minimaal de velden:
boekId
leerlingId
uitleendatum
terugbrengdatum
status


En dan even iets over de techniek:
Splits je database 1 twee stukken:
1 stuk met de tabellen, noem dit mijnDB-backend
1 stuk met formulieren, noem dit mijnDB-frontend

In je frontend koppel je de tabellen van je backend. Het frontend staat op iedere client, het backend ergens op het netwerk.

en nu een antwoord op je vraag: zorg dat je met opzoeklijstjes steeds het Id oplevert. Dit is uniek, en kan je dus prima gebruiken in het zoeken naar de juiste records

Ten slotte kan je dit soort klussen voor je bedrijf (in dit geval een school) beter over laten aan mensen die databases goed beheersen. Mij laten ze ook niet een muurtje metselen, ook al kan ik een baksteen vasthouden en volsmeren met spezie.

[ Voor 50% gewijzigd door Witte op 14-09-2011 20:42 ]

Houdoe


Acties:
  • 0 Henk 'm!

  • schootje
  • Registratie: Januari 2008
  • Laatst online: 08-09 11:04
Klopt, ik ben ook echt geen expert met Access, maar in iedergeval bedankt voor de tips!

Nu hebben we het ook wat simpeler gedaan,
1 tabel met Leerlingen
1 tabel met groepen
1 tabel met het "overzicht" (| Boektitel | Auteur | Naam leerling | Groep | Datum | Ingeleverd[X] |)

En dus een formuliertje waar je de data in typt, en zoals je al zegt is er met deze structuur ook geen goede filter mogelijkheid.
Maar voor dit simpel "extratje" voor de leerkrachten was dat allemaal ook niet nodig.

Ook heb ik zoals je al zegt al geleerd dat Access meer kan en moeilijker is dan het lijkt,
Op mijn opleiding hebben we Access lessen gehad (Medewerker Beheer ICT N3) maar dit is echt het meest basic Access wat we hebben gehad ben ik dus achter gekomen.

Maar bedankt voor je feedback! :*)

en wat mij betreft kan hier een slotje op? 8)7

Acties:
  • 0 Henk 'm!

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 29-07 11:23
En toch zou ik je tabel met het ovwerzicht nog eens de revu laten passeren.

- Stel ik heb een boek, laat zeggen 'Access voor beginners'.
- Dit boek wordt uitgeleend aan laat zeggen 'Witte', op 16 september 2011
So far so good...
- Nu brengt 'Witte' het boek terug.
Wat doe je dan in je tabel 'Overzicht'? Leeg je het veld 'Naam leerling'?
Zo bouw je totaal geen historie op, van een boek.

Verder:
Ik zou nóóit in de tabel 'Overzicht' de Naam van de leerling noteren, maar het ID van de leerling uit de tabel.
Bijvoorbeeld: Stel je hebt de leerling in eerste instantie fout gespeld, Iemand heet geen Natalie, maar Nathalie. Ga je dan ook je in tabel 'Overzicht' alles repareren?

Echt, je móet een tabel met boeken maken, voor zien van een ID
En een tabel leerlingen, voorzien van een ID
Dan kan je een tabel 'overzicht' maken, waain je zowel de BoekID en LeerlingID gebruikt.

Het gebruik van ID's in andere tabellen noemen databasebouwers: Foreign Keys en kunnen gebruikt worden om de referentiële integriteit van je database in stand te houden. Google daar maar eens op.

Jij gebruikt Access als een veredelde Excel, je tabel 'Leerlingen' heeft eigenlijk geen enkele functie.

[ Voor 14% gewijzigd door Witte op 16-09-2011 15:28 ]

Houdoe


Acties:
  • 0 Henk 'm!

  • schootje
  • Registratie: Januari 2008
  • Laatst online: 08-09 11:04
Als het boek word terug gebracht kunnen de leerkrachten het veld "Ingeleverd" aanvinken.

En ik denk dat ik het ook niet goed heb uitgelegd want vanaf het begin al is in de tabel "Overzicht" "Groep" gekoppeld aan de tabel met de groepen, (ik kwam er zelf ook al achter dat voor elke groep een andere tabel niet handig was). en "Naam leerling" is dus gekoppeld aan de tabel "Leerlingen",
en in de tabel "Leerlingen" is elk leerling dus weer gekoppeld met de groep uit de "groepen" tabel.

Dus tabel "Overzicht"
- Oplopend nummer als ID
- Naam leerling gekoppeld aan de tabel Leerlingen
- Groep gekoppeld aan de tabel Groepen

Tabel "Leerlingen"
- Leerling naam als ID
- Groep gekoppeld aan de tabel Groepen

Tabel "Groepen"
- Groep als ID

Want het gebruik van relatie's snap ik ook wel, Maar heb ik dus denk ik niet goed uitgelegd en hoop dat je het snapt hoe ik het heb gedaan zo. O-)

Acties:
  • 0 Henk 'm!

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 29-07 11:23
Prima, doe het zoals je wil.
Het is - pardon my french - erg dom om de 'Naam Leerling' als een ID te gebruiken. Het idee achter een ID (als sleutel) is dat het uniek is, en nooit 2 x wordt uitgedeeld, ook niet als een record wordt verwijderd. Access kan dit prima voor je regelen.
Wat nou als er 2 leerlingen hetzelfde heten, niet heel raar als dit systeem een aantal jaar gebruikt gaat worden.
Uiteraard ben je helemaal vrij om het te doen zoals je wil. Een laatste tip: kijk eens naar Northwind, de demo-database van Access. De help-functie verwijst daar vaak naar.

[ Voor 3% gewijzigd door Witte op 16-09-2011 21:58 ]

Houdoe

Pagina: 1