Toon posts:

[MS Access] Selecteren dmv Categorisatie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende:

ik heb een database met daarin NAW gegevens van leerlingen.
dus van de eerste tot en met de 6de klas.

Nu wil ik straks op het schakelbord de mogelijkheid maken dat ze straks een formulier kunnen openen waarin alleen maar bv de brugklas zit of de 1 2 en 3 klas of alleen de bovenbouw zodat ze dan op een beetje gesorteerd manier door het formulier kunnen gaan waarin de leerlingen zitten van de klassen die zijn aan gegeven.

Maar nu komt dus de vraag hoe zorg ik er dus voor dat als ik bijvoorbeeld op de button 'Onderbouw' klik dat ik alle 1ste 2de en 3de klassen krijg.

de 1ste klas bestaat uit:B01 tot B21 (maar de cijfers kunnen per schooljaar verschillen kan dus ook zijn tot B23 of B32)
de 2de klas bestaat uit: A2, H2, G2 (met daarachter nog een klas aanduiding bv A2a of A2c)
en klas 3 is hetzelfde als klas 2.

Als ik de onderbouw weet dan kan ik de bovenbouw zelf wel uitvogelen. Maar ik weet dus niet hoe ik dit goed kan doen zonder iedere keer in een select query alle klassen te moeten aan geven. Heb al gezocht via de search en via google en yahoo maar ik kan niets vinden!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Als je de klassen nu categoriseert in Onderbouw; Bovenbouw etc. dan kan je daarop filteren. (Dus in tabel "Klas" een extra veld met daarin de categorie)
De klassen zelf hardcoded in de query zetten is niet verstandig, omdat je zelf aangeeft dat deze kunnen veranderen.
Eventueel kan je ook dit doen: WHERE KlasID LIKE 'B%'
Maar ik vind dat niet echt een nette oplossing.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Hmmm.. Er zit dus niet echt een logica in.. :+
Even denken...
Je hebt een aantal leerlingen:
[leerlingen]
LeerlingID
NAW

[klassen]
KlasID
Klascode (B01, B21, etc)
Jaar
Type (Havo, Brugklas, etc.)
etc.

En de koppeling tussen deze 2
[Koppeltabel]
LeerlingID
KlasID

Met deze laatste een gecombineerde primaire sleutel.

Vervolgens kan je dmv een simpele join de klassen er wel uit krijgen. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
kenneth schreef op 26 March 2003 @ 09:59:
Als je de klassen nu categoriseert in Onderbouw; Bovenbouw etc. dan kan je daarop filteren. (Dus in tabel "Klas" een extra veld met daarin de categorie)
De klassen zelf hardcoded in de query zetten is niet verstandig, omdat je zelf aangeeft dat deze kunnen veranderen.
Eventueel kan je ook dit doen: WHERE KlasID LIKE 'B%'
Maar ik vind dat niet echt een nette oplossing.
Het probleem is de gegevens komen recht streeks uit Schoolplus (Admin programma) en ik kan vrij weinig tornen aan deze file. Deze laad ik in en dan heeft een leerling dus direct als klas erbij staan:

B21 of B01 of A6e.

Dus een extra veld maken met boven of onder bouw gaat niet echt makkelijk en dan nog heb ik het probleem als ik bijvoorbeeld alleen maar Klas 2 en 3 wil hebben want de tag onderbouw bevat ook klas 1
gorgi_19 schreef op 26 March 2003 @ 10:28:
Hmmm.. Er zit dus niet echt een logica in.. :+
Even denken...
Je hebt een aantal leerlingen:
[leerlingen]
LeerlingID
NAW

[klassen]
KlasID
Klascode (B01, B21, etc)
Jaar
Type (Havo, Brugklas, etc.)
etc.

En de koppeling tussen deze 2
[Koppeltabel]
LeerlingID
KlasID

Met deze laatste een gecombineerde primaire sleutel.

Vervolgens kan je dmv een simpele join de klassen er wel uit krijgen. :)
Er zit wel een btje logica in hoor.

A = Atheneum
G = Gynasium
H = Havo
B = Brugklas
en het cijfer bij A,G,H staat voor het leer jaar
en het cijfer bij de B staat gewoon voor de klas.

Dus eigenlijk waar ik op moet sorteren is bij de Brugklassen de B
en bij G,H,A moet ik sorteren op het cijfer in het midden.

Maar ik weet hier dus geen 'simpele' join voor!

  • Sjnirk
  • Registratie: Maart 2001
  • Laatst online: 27-03-2025

Sjnirk

Hie vrieve

Verwijderd schreef op 26 March 2003 @ 11:29:


Er zit wel een btje logica in hoor.

A = Atheneum
G = Gynasium
H = Havo
B = Brugklas
en het cijfer bij A,G,H staat voor het leer jaar
en het cijfer bij de B staat gewoon voor de klas.

Dus eigenlijk waar ik op moet sorteren is bij de Brugklassen de B
en bij G,H,A moet ik sorteren op het cijfer in het midden.

Maar ik weet hier dus geen 'simpele' join voor!
Maar als je voor jou oplossing wilt gaan, moet je elk jaar weer vanalles gaan veranderen in de leerlingentabel in welke klas ze zitten enzo, dit kun je beter zo doen, als het hierboven is aangegeven.

Dus

[leerlingen]
LeerlingID
NAW

[klassen]
KlasID
Klascode (B01, B21, etc)
Jaar
Type (Havo, Brugklas, etc.)
etc.

En de koppeling tussen deze 2
[Koppeltabel]
LeerlingID
KlasID


Voor de join is het zo dat je zoiets moet hebben

Select leerling ofzoiets
From leerling, koppeling, klas
Where leerling.leerlingID = koppeling.leerlingID AND koppeling.KlasID = klas.klasID AND klascode = "b01"

bijvoorbeeld dan, die klascode zou je bijvoorbeeld met een stukje VBA in je code kunnen laten veranderen voor elke klas.


Aangezien de meeste leerlingen wel in dezelfde klas blijven zitten hoef je nu dus alleen de klascode elk jaar aan te passen.

[ Voor 7% gewijzigd door Sjnirk op 26-03-2003 12:42 ]

Bikkelen gebeurt pas na 2:00


Verwijderd

Topicstarter
Sjnirk schreef op 26 March 2003 @ 12:41:
[...]


Maar als je voor jou oplossing wilt gaan, moet je elk jaar weer vanalles gaan veranderen in de leerlingentabel in welke klas ze zitten enzo, dit kun je beter zo doen, als het hierboven is aangegeven.

Dus

[leerlingen]
LeerlingID
NAW

[klassen]
KlasID
Klascode (B01, B21, etc)
Jaar
Type (Havo, Brugklas, etc.)
etc.

En de koppeling tussen deze 2
[Koppeltabel]
LeerlingID
KlasID


Voor de join is het zo dat je zoiets moet hebben

Select leerling ofzoiets
From leerling, koppeling, klas
Where leerling.leerlingID = koppeling.leerlingID AND koppeling.KlasID = klas.klasID AND klascode = "b01"

bijvoorbeeld dan, die klascode zou je bijvoorbeeld met een stukje VBA in je code kunnen laten veranderen voor elke klas.


Aangezien de meeste leerlingen wel in dezelfde klas blijven zitten hoef je nu dus alleen de klascode elk jaar aan te passen.
Dat had ik dus gehoopt , de meeste switchen dus ook nog tussen A5a of A5b etc. Dus dat is ook nog eens erg.

Maar op die manier dat ik dus wil gaat dus niet? Want het probleem wordt dus dat ik dan bij 2600 leerlingen (en het worden er nog meer) dus in het begin van het jaar allemaal klassencodes moet gaan zitten invoeren!

  • Sjnirk
  • Registratie: Maart 2001
  • Laatst online: 27-03-2025

Sjnirk

Hie vrieve

Op jouw manieer moet je dus zoals je zegt elk jaar alles opnieuw gaan invoeren ja, als je het met id's doet niet, dat zou je in access nog zelfs wel met autonummering kunnen doen (is niet echt de beste oplossing). Ik zou het dus gewoon doen hoe het hierboven is opgeschreven, lijkt mij het handigste.

Bikkelen gebeurt pas na 2:00


  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Als de klassen uit die codes zijn te halen dan kan je toch een query maken met een aparte kolom met dat cijfer ering? Met mid([klascode],2,1) krijg je het 2e karakter uit dat veld.

Met een heleboel iif-statementes kan je aparte nummers laten genereren voor de code's die met een letter beginnen et voila!

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Sjnirk schreef op 26 March 2003 @ 20:50:
Op jouw manieer moet je dus zoals je zegt elk jaar alles opnieuw gaan invoeren ja, als je het met id's doet niet, dat zou je in access nog zelfs wel met autonummering kunnen doen (is niet echt de beste oplossing). Ik zou het dus gewoon doen hoe het hierboven is opgeschreven, lijkt mij het handigste.
Ik zie hier dus niet de handigheid van in.

Als ik nu de database opnieuw ga vullen dan moet ik dus voor iedere leerling apart een klassenid toevoegen?
Dan lijkt me een query die kijkt wat voor een klas het betreft toch makkelijker of zie ik dat verkeerd.

Ik gooi de database altijd leeg om zo te voorkomen dat ik fouten maak met het opnieuw bijvoegen, verwijderen of aanpassen van records

  • Boss
  • Registratie: September 1999
  • Laatst online: 19:01

Boss

+1 Overgewaardeerd

Werkt mijn voorstel dan niet goed? Zoals je zelf schreef
Er zit wel een btje logica in hoor.

A = Atheneum
G = Gynasium
H = Havo
B = Brugklas
en het cijfer bij A,G,H staat voor het leer jaar
en het cijfer bij de B staat gewoon voor de klas.

Dus eigenlijk waar ik op moet sorteren is bij de Brugklassen de B
en bij G,H,A moet ik sorteren op het cijfer in het midden.
En die letters / cijfers zijn met een mid-functie er goed uit te halen in een query!

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1