Automatisch aanvullen van gegevens in formulier

Status
Niet open voor verdere reacties.

Jennyf

Nieuwe gebruiker
Lid geworden
25 okt 2019
Berichten
2
Hallo,

Ik ben nieuw in het gebruik van access. IK heb een formulier opgesteld. Hierin worden gegevens verwerkt van personen. Mijn vraag is nu;

Wanneer er een persoon wordt gekozen uit het keuzemenu dat ik heb opgesteld, is het dan mogelijk dat het telefoonnummer automatisch aangevuld wordt die bij die desbetreffende persoon hoort?

Ik heb een tabel met de velden Naam en Telefoonnummer en een tabel met velden: naam, functie, plaats etc.

Alvast bedankt,
Jennifer
 
Dag Jenny, is er een reden voor die twee tabellen? Bijvoorbeeld: een persoon heeft slechts één telefoonnummer, maar meerdere functies? Zo ja, dan zou ik een tabel tblPersoon aanmaken met als primaire sleutel perID (autonumber) en een tabel tblPersoonFuncties met als velden:
pfcID (autonumber) - primary key
pfcFunctie- tekst , of misschien ophalen uit een lijst tabel met de mogelijke functies
pfcPersoon - number, long -> foreign key naar tblPersoon
pfcPlaats : text

Dan kan je een formulier met subformulier maken: in het hoofdformulier de gegevens van de persoon en in het subformulier zijn functies

Voor je verder gaat zou ik in elk geval eens kijken naar database normalisatie, er zijn genoeg voorbeelden op het web te vinden, bvb https://support.microsoft.com/nl-be/help/283878/description-of-the-database-normalization-basics
 
Hallo,

Het is inderdaad zo dat een persoon meerdere functies kan hebben.

Het enige dat ik aan de persoon wil linken is het nummer, dat alleen deze automatisch veranderd wanneer de persoon geselecteerd wordt. Ik weet alleen niet of ik dit met een query\relatie moet doen en hoe ik dit bij het formulier voor elkaar krijg.

Ik heb op internet gezocht maar het lukt mij helaas niet om dit voor elkaar te krijgen.

Groetjes,
Jennifer
 
Eerst en vooral moet je de link leggen in het relatievenster van de database. Daarom heb je een primaire sleutel in de tabel aan de één-kant nodig, en een vreemde sleutel in de tabel aan de twee-kant. Die kan je dan in het relatievenster
voorbeeld:
RelatiePersoonFunctie.JPG

Eens de juiste relatie is gelegd kan je daarmee een hoofd- en subformulier maken. Vanals je een persoon opzoekt, dan wordt in het hoofdformulier de gegevens van de persoon (ook het tel. nr) getoond en in het subformulier al zijn/haar functies
 
Ik zou in dit geval ook het telefoonnummer gewoon in de personen tabel opslaan. Eigenlijk moet je het 'normaliseren' zo zien: je gebruikt de (meestal eerste 3) normaalvormen om te bepalen welke gegevens bij elkaar horen en één object typeren. Een persoon heeft bijvoorbeeld één naam, één geboortedatum etc. En (doorgaans voor een database) één of hooguit een paar telefoonnummers. Die telefoonnummers zijn een kenmerk van zo'n persoon: als je één van de vastgelegde telefoonnummers belt, krijg je die persoon aan de lijn. Het vastleggen van een historie van telefoonnummers (dat zou wat mij betreft de enige reden zijn om er een aparte tabel voor te maken) doe je alleen als je een bijvoorbeeld een provider bent en ook de contracten voor die nummers vastlegt. Voor normaal gebruik is het onzinnig om ook oude nummers te bewaren, want je kunt ze toch niet gebruiken (de persoon neemt niet meer op).

Kortom: bedenk altijd goed waarom je gegevens wilt vastleggen; het gebruiksdoel bepaalt hoe je die gegevens vastlegt. Bij meerdere functies voor een persoon kan het handig zijn om de historie daarvan ook vast te leggen, maar of je daar ook verschillende telefoonnummers aan hangt? Ik betwijfel het.

Heb je (overigens maakt het niet uit of je één tabel gebruikt, of meerdere) de structuur en de gegevens vastgelegd, dan kun je in je (keuzelijst met invoervak) alle gegevens opnemen die je wilt kunnen zien, dus NAW gegevens en telefoonnummers. Nogmaals: dat kan bij zowel het gebruik van één tabel, als bij meerdere tabellen. De query zal als het goed in beide gevallen alle gegevens die jij wilt zien, tonen.

Op je formulier maak je vervolgens tekstvakken waarbij je gegevens uit die keuzelijst kunt halen. Je verwijst dan in de Besturingselementbron van zo'n tekstvak naar de eigenschap Column van de keuzelijst. Stel dat je in de keuzelijst (die cboPersoon heet in het voorbeeld) in de vierde kolom het telefoonnummer hebt gezet, dan krijgt het tekstvak txtTelefoon dit als besturingselementbron: =[cboPersoon].Column(3). En op die manier kun je dus alle beschikbare kolommen uitlezen.
 
Of je gewoon even verdiepen in Access, het is een prachtig programma :). Bovendien: goede databases maak je pas als je kennis en inzicht hebt in de materie van het databases maken. De gebruikte tool DBase, Filemaker, Access, SQL Server) staat daar volkomen los van. Is ook een beetje de makke van Microsof, want die denken nog steeds dat als je de juiste knoppen kan vinden, je weet hoe een pakket werkt :).
Mijn tip: blijf gewoon in Access werken, ook al omdat het perfect samenwerkt met Excel en Word. En je je maar in één interface en programmeertaal hoeft te verdiepen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan