Bewoners op een adres

Status
Niet open voor verdere reacties.

Radagast

Gebruiker
Lid geworden
8 jun 2005
Berichten
37
Ik heb een adressenbestand in Access (2007). Deze heeft 2 tabellen:

Personen
- id
- voornaam
- achternaam
- adresid
- etc..

Adressen
- adresid
- straat
- postcode
- etc..

De reden dat dit gesplitst is is omdat er meerdere personen op hetzelfde adres kunnen wonen, en als iemand verhuist ik heb alleen een ander adresid hoef te geven. Met andere woorden, geen van de attributen bij Personen zijn afhankelijk van het adres.

Een voorbeeld:
Mijn vader en moeder delen dezelfde achternaam en hetzelfde adres.
Wanneer ik een SELECT doe op alle adressen icm achternaam - en ik maak deze distinct - zie ik bijvoorbeeld:
Jansen | Hoofdstraat 3 | Amsterdam

Wat ik graag erbij zou willen hebben is uit hoeveel personen het huishouden Jansen bestaat. Ik wil dus een soort count in de query, maar ik weet niet zo goed hoe ik die count moet formuleren.
Code:
SELECT Personen.Achternaam, Adressen.Straat, |knip|, COUNT(||wat moet ik precies tellen?||)
FROM Personen, Adressen
WHERE Personen.AdresID = Adressen.AdresID

Ik heb al eens geprobeerd te tellen op PersoonID, maar daar wil Access niet aan.

Uiteindelijk wil ik een mooie Mail Merge met Word kunnen maken. Als het huishouden uit 1 persoon bestaat kiest ie afhankelijk van het geslacht "Dhr." of "Mevr." als aanhef, en als er meer dan 1 persoon op dat adres woont moet ie "Fam." kiezen. Maar zover kom ik niet als ik niet een veld heb met het aantal personen.

Iedereen alvast bedankt voor het inzicht.
 
Laatst bewerkt:
Hiervoor kun je het best een 2e query bouwen waarmee je het aantal PersonenId's berekent.
Deze query kun je vervolgens in je reeds bestaande query koppelen met een JOIN.
 
Dankjewel. Dit werkt :).

Nu wat moeilijker. Als 2 personen niet gezelfde achternaam hebben, maar wel op hetzelfde adres wonen wil ik ook geen "Fam." als aanhef.

Ik wil dus ook kunnen zien hoeveel unieke achternamen er per adres staan. Alleen Access kan geen COUNT(Distinct ...).
 
In de query waarin je de COUNT hebt staan een GROUP BY op achternaam opnemen.
 
hoi, ik ben een net beginnend access-er en moet het doen met een access-cursusje en proberen. nu zit ik met ongeveer hetzelfde probleem als hierboven beschreven:

ik heb mijn database zo ver mogelijk vereenvoudigd om me nu alleen ff op het programeren te hoeven focussen en niet de lay-out. het gaat in mijn geval om een tabel klantID en adresID. het kan dus zijn dat er meerdere klanten op 1 adres wonen en nu moet het dus mogelijk zijn om dat in 1 hadneling in te voeren. ik heb de tabellen zo ver mogelijk vereenvoudigd:

KlantID:
Klantnummer (auto)
voornaam
postcode/huisnummer

AdresID:
Adresnummer (auto)
straat
postcode/huisnummer

natuurlijk moet er meer bij zoals achternaam en woonplaats en land etc. maar voor de simplicity heb ik dat nog niet ingevuld. so far so good, maar nu wil ik een nieuwe klant toevoegen uiteraard door eerst zijn persoonsgegevens in te voeren in KlantID. als ik dit gewoon in tabellen invoer, dan moet ik ook de postcode/huisnummer invullen en als het adres nog niet bestaat dan kan dit niet.

nu kan ik ook een formulier aanmaken of een query oid, maar dan blijf je met hetzelfde probleem zitten, dan moet je bij een nieuw adres eerst de postcode/huisnummer uit AdresID invullen en dan wordt die in KlantID automatisch aangevuld. Andersom kan het ook, dat je een klant toevoeg op een al bestaand adres maar dan moet je de postcode/huisnummer invullen in KlantID waarna AdresID automatisch wordt bijgewerkt.

dit zijn dus twee verschillende handelingen voor het aanmaken van klanten, het moet mogelijk zijn dit te beperken tot 1 handeling, en wellicht is er een erg simpele oplossing maar ik kom er iig niet uit..

is er iemand die me kan helpen? bvd
 
Als je de klantgegevens invoert kun je de adresgegevens aan de hand van AdresID koppelen mbv een keuzelijst in een formulier.
 
Het blijven inderdaad op die manier 2 handelingen. Omdat het adresID in je tabel met klantgegevens een Foreign Key is moet deze of null zijn of bestaan in de tabel met adressen.
Een oplossing zou zijn om middels een formulier aan te geven dat Access prioriteit moet geven aan de tabel met adressen, maar ik weet niet of dat kan.
 
Via een keuzelijst met invoervak kun je met de gebeurtenis "Bij niet in lijst" een nieuw adres toevoegen aan de brontabel. Even zoeken in de access-help op 'keuzelijst uitbreiden'.
 
ja dat moet inderdaad lukken, het idee is al goed alleen de uitvoering, daar lacked het bij mij nog wat aan want ik snap er geen **** van..

ik maak nu dus gewoon een formulier met de wizzard en dan selecteer ik alleen voornaam en postcode/huisnummer uit de eerste tabel en straat uit de tweede.. krijg je opzich dat wat ik wil. dan verander ik het invoerveld van postcode in selectielijst met invoerveld. maar erg veel doet ie dan niet, wat moet er bij besturingselemenbron, invoermasker en type rijbron staan? uit lijst maak je nee en dan bij niet-in-lijst maak ik een macro 'naarrecordgaan' veldtype tabel, objectnaam AdresID en records nieuwe.

nu doe ik zeker weten wat fout, maar ik heb geen idee wat?

bvd
 
Nu nog een probleem:

Bij de aanhef,
IF aantal_personen_op_adres > 1 dan moet er "Fam." komen.
ELSE
IF geslacht = "m"
"Dhr"
ELSE
"Mevr
END IF
END IF

Deze constructie krijg ik in mail merge niet voor elkaar. Weet iemand of het kan?
 
Van Mail merge heb ik geen kaas gegeten, heb echter wel een tip voor je.

I.p.v.

Code:
If
Else
  If
  End If
End If

.. kun je ook gebruiken

Code:
If
ElseIf
EndIf

Dit houdt je code overzichtelijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan