Ledenbestand

Status
Niet open voor verdere reacties.

Maki209

Gebruiker
Lid geworden
28 jan 2013
Berichten
22
Hoi allemaal,

Ik ben al een tijd pogingen aan het doen om een ledenbestand (jeugdbeweging) te ontwerpen. Mijn Access-kennis heb ik verworven dankzij het www, dus er zullen wel nogal wat gaten inzitten. Het zou dus goed kunnen dat de oplossing helemaal niet vergezocht dient te worden :) Er zijn al een aantal vragen in me opgekomen, maar ik zal ze een voor een stellen om het overzicht niet te verliezen ...

Ik doe mijn best om het zo helder mogelijk te formuleren ;-)

In totaal zijn er 37 kinderen. Die 37 zijn dan nog eens in 4 groepen (nesten heet dat bij ons) verdeeld, met per nest een nestleider & een hulpnestleider - deze zijn telkens een van de kinderen.

Ik heb dus een tabel 'jongwelpen' met daarin:

JongwelpenID
Voornaam
Naam
Geboortedatum
Straat + nr
Postcode
Gemeente
Telefoon
Nest

Daarnaast heb ik een tabel 'nesten'

NestID
Nest
Nestkreet
Nestleider (Gegevenstype: numeriek ? )
Hulpnestleider (Gegevenstype: numeriek ? )

'Nestleider' en 'Hulpnestleider' kies ik door middel van een keuzelijst in het formulier 'nesten' waar de voornaam en de familienaam van de kinderen tevoorschijn komen (die informatie haal ik dus uit de eerste tabel).


Ik wil nu een rapport maken van de 4 nesten. Ongeveer zo:

NEST 1
Nestkreet: Slimme Jacala
Nestleider: Piet Pieters
Hulpnestleider: Jan Janssen
En dan daaronder de namen van de andere kinderen die in dat nest zitten.

Liefst vanal zou ik het bovenstaande dan 4x herhalen, zodat ik in 1 rapport een mooi overzicht heb van de 4 nesten.


Kan er me iemand een stapje verder helpen?
Alvast bedankt !!
 
Je structuur is niet slecht, maar kan beter. Het veld [Straat + nr] bijvoorbeeld moet je eigenlijk opsplitsen in [Straat] + [Nummer]. De combinatie [Postcode] + [Nummer] is namelijk uniek, en kun je dus gebruiken om eventueel straatnamen uit een postcode tabel op te halen. Straatnamen op zichzelf zijn niet uniek, en moet je niet combineren met huisnummer, omdat je dan problemen over jezelf afroept die je niet wilt. "Burg. van den Oudenallenstraat 43" en "Burg. v. d. Oudenallenstraat 41" zijn vermoedelijk dezelfde straat, maar dat kun je op deze manier nooit meer bepalen. Als het goed is hebben ze wel alletwee dezelfde postcode.
Je rapport is, als je data verder klopt, een kwestie van een groepering in het rapport aanbrengen op basis van het veld NestID. Zet dan de koptekst voor het veld aan, zoda je daar de nestgegevens in kunt zetten. In de Detailsectie zet je dan de namen van de nestleden.
 
De combinatie [Postcode] + [Nummer] is namelijk uniek, en kun je dus gebruiken om eventueel straatnamen uit een postcode tabel op te halen.

Is dat in Belgie ook zo?
Ik dacht dat de Belgische postnummers op woonplaats-niveau waren.
 
Heb je een punt; postcodes in België hebben alleen cijfers. Neemt niet weg dat straatnamen en huisnummers in één veld niet zouden moeten; dat is strijdig met de normalisatieregels ;)
 
postcodes hebben inderdaad enkel cijfers in Belgie (bv. 8000 of 8380). Op het eerste zicht lijkt een aparte databank voor straatamen iets te omslachtig voor 37 leden? Of zie ik dat verkeerd?

In het rapport krijg ik wel het NestID te zien (bv. 8 - - de autonummering dus), maar niet de benaming van het nest ('Nest 2' bijvoorbeeld). Dat heeft te maken met de relaties denk ik?
 
Ik zeg niet dat je een aparte tabel of database hoeft te maken voor de straatnamen. Wèl dat je het veld [Straat + Nr] moet splitsen in de velden [Straatnaam] en [HuisNr].
Je rapport moet je baseren op een query waarin alle velden die je in het rapport nodig hebt zitten. Dat is nu niet het geval, want zo te zien ontbreekt het veld [Nest].
 
Ok, de voorbije dagen ben ik een aantal stappen verder geraakt. Nu zit ik echter weer iet of wat vast (waarschijnlijk terug heel voor de hand liggend, maar ik zie het gewoon niet ...).

Ik heb dus mijn tblJongwelpen (ik zal hem iets minder uitgebreid voorstellen):

JongwelpenID (AutoNummering)
Voornaam (Tekst)
Naam (Tekst)

Verder heb ik ook mijn tabel nesten

NestID (AutoNummering)
Nestkreet (Tekst)
Nestleider (Numeriek)
Hulpnestleider (Numeriek)


Hoe kan ik nu een query maken waar ik per nest kan zien wie er nestleider en hulpnestleider is? Vaak krijg ik gewoon geen resultaten, of krijg ik de autonummering van JongwelpenID als resultaat ...

Ik heb al heel wat geprobeerd met relaties enzo, maar ik geraak er niet ... Nog iemand die kan verder helpen?

Nogmaals bedankt
 
Op basis van wat je nu laat zien? Zonder de noodzakelijke tabellen blijft het toch een beetje gokken. Maar ik neem aan dat je nog tabellen hebt waarin je de leiders koppelt aan Nesten, en dan is het simpel een kwestie van alle tabellen die je nodig hebt in de query zetten, en dan de juiste velden selecteren. Meer is het niet.
 
qryNestendetail.pngrelaties_ledenbestand.png
Op basis van wat je nu laat zien? Zonder de noodzakelijke tabellen blijft het toch een beetje gokken. Maar ik neem aan dat je nog tabellen hebt waarin je de leiders koppelt aan Nesten, en dan is het simpel een kwestie van alle tabellen die je nodig hebt in de query zetten, en dan de juiste velden selecteren. Meer is het niet.

De nestleiders en hulpnestleiders komen uit tblJongwelpen (had ik misschien wat duidelijker moeten zeggen :) ).

Ter illustratie de 2 screenshots in bijlage. In de query die je daar ziet, zou ik dus een mooi overzichtje per nest willen hebben, maar ik krijg geen resultaten terug :(

(verder heb ik ook nergens aangegeven dat ik voornaam + naam wil terugkrijgen als nestleider en hulpnestleider, dus die query kan dat helemaal niet weten ... :confused: )
 
En hoe ziet die query er dan uit?
 
Dit wordt vermoeiend zo ;)
Een plaatje van een lege query schiet natuurlijk niet op; als ik om de query vraag, dan zie ik ofwel een plaatje van het ontwerp (liever niet overigens) ofwel de feitenlijke SQL code.
 
Je hebt het tegen een complete Access-leek hoor ;) Geen idee wat SQL is of doet, maar hier heb je hem:

[SQL]SELECT tblNesten.Nest, tblNesten.Nestkreet, tblNesten.Nestleider, tblNesten.hulpnestleider
FROM tblJongwelpen INNER JOIN tblNesten ON (tblJongwelpen.JongwelpenID = tblNesten.Nestleider) AND (tblJongwelpen.JongwelpenID = tblNesten.Nestleider) AND (tblJongwelpen.JongwelpenID = tblNesten.Nestleider) AND (tblJongwelpen.JongwelpenID = tblNesten.Hulpnestleider) AND (tblJongwelpen.JongwelpenID = tblNesten.Nestleider) AND (tblJongwelpen.JongwelpenID = tblNesten.Hulpnestleider);[/SQL]
 
Wat SQL doet? Da's simpel: dat is je query. In het ontwerpscherm van een query maak je een query, die dus bestaat uit de code die je kunt lezen in het SQL venster. De een kan dus niet zonder de ander. Sterker nog: de één is de ander :)

Ik snap overigens weinig van de query, want ik zie daar zo'n 4 keer hetzelfde criterium terugkeren, en dat klopt natuurlijk niet. Wat ook niet klopt, is dat je maar één tabel gebruikt voor de nestleider en hulpnestleider, en dat kan ook niet, tenzij nestleider en hulpnestleider dezelfde persoon zijn. En dan nog: dat werkt alleen als je zeker weet dat in alle records zowel een nestleider als een hulpnestleider is ingevuld. Is het veld [hulpnestleiderID] leeg, dan zie je die lege records niet, ook al heb je wel een nestleider.

Dus twee aanpassingen zijn er nodig: ten eerste moet je de tabel [tblJongwelpen] twee keer toevoegen i.p.v. 1 keer. Daarbij zou ik ze alletwee een alias geven, zodat je in de naamgeving ziet welke tabel je waar voor gebruikt. Dus de eerste versie geef je het alias Nestleider o.i.d. en de andere (die [tblJongwelpen_1] zal heten noem je dan Hulpnestleider.
De tabel [Nestleider] koppel je aan tblNesten.Nestleider (met het veld [JongwelpenID]) en de tabel [Hulpnestleider] koppel je aan [tblNesten.Hulpnestleider]. Nu zie je de juiste gegevens. Om ook records te zien zonder hulpnestleider, moet je de relatie tussen de twee tabellen veranderen. Als je daar op dubbelklikt, zie je dat optie 1 is geselecteerd. Afhankelijk van de tabellen moet je optie 2 of 3 hebben. Het kan geen kwaad om ze allebei te proberen, en te zien welke de juiste is. Dat kan ik zo niet zeggen.
 
Ik blijf maar bijleren :-)

Ik ben dus alweer iets verder geraakt. De qry geeft nu inderdaad resultaten; daar zijn we al ... echter, hij geeft nu telkens de JongwelpenID weer als resultaat. Logisch natuurlijk, maar ik wil dat de qry voornaam + naam weergeeft als resultaten ...

Nest Nestkreet Nestleider hulpnestleider
Nest 1 Fantastische Phao 3 15
Nest 2 Slimme Jacala 11 1
Nest 3 Blije Meeko 20 10
Nest 4 Lachende Chil 39 19

[SQL]SELECT tblNesten.Nest, tblNesten.Nestkreet, tblNesten.Nestleider, tblNesten.hulpnestleider
FROM tblJongwelpen AS Hulpnestleider INNER JOIN (tblJongwelpen AS Nestleider INNER JOIN tblNesten ON (Nestleider.JongwelpenID = tblNesten.Nestleider) AND (Nestleider.JongwelpenID = tblNesten.Nestleider) AND (Nestleider.JongwelpenID = tblNesten.Nestleider) AND (Nestleider.JongwelpenID = tblNesten.Nestleider)) ON Hulpnestleider.JongwelpenID = tblNesten.hulpnestleider;[/SQL]

Waarschijnlijk moet ik dan ergens tbl.Jongwelpen[Voornaam]+[Naam] of iets dergelijks voor invoeren, maar waar zie ik niet meteen ... ?
 
Je geeft in je eerste post al aan waar die waarden staan...
Ik heb dus mijn tblJongwelpen (ik zal hem iets minder uitgebreid voorstellen):

JongwelpenID (AutoNummering)
Voornaam (Tekst)
Naam (Tekst)
Je hebt de tabel [tblJongwelpen] als Hulpnestleider en Nestleider toegevoegd; daarin staan de velden die je wilt zien. Nu gebruik je daar niks uit.

Overigens is de codeopmaak die je gebruikt (knop SQL) wel correct, maar het is zo gruwelijk lastig om de hele sql code te kopieëren (probeer maar eens). Ofwel de knop CODE gebruiken, ofwel de regels netter afbreken :)
 
Yessss :-) dat was (toch voor dit deel) the missing piece :-) HAAAARTELIJK dank voor het geduld met een Access-n00b ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan