Na kiezen van een opzoekveld automatisch andere velden vullen

Status
Niet open voor verdere reacties.

velde046

Gebruiker
Lid geworden
4 nov 2004
Berichten
71
Eens zien of ik eerst de situatie uiteen kan zetten.

Ik heb een database met twee tabellen. De eerste tabel heet Instanties en deze bevat de velden:
Naam
Contact1
Contact2
Contact3
Contact4
Contact5

En ik heb een tweede tabel waarin ik informatieformulieren maak met de naam Informatieformulier. Deze bevat de velden:
Naam
Datum
Lokatie
Omschrijving
Contactpersoon1
Contactpersoon2
Contactpersoon3
Contactpersoon4
Contactpersoon5

Nu heb ik in de laatste, het veld naam een opzoekveld gemaakt waarbij de gebruiker moet kiezen uit namen die voorkomen in de tabel instanties. Dat werkt prima.
Nu wil ik graag dat zodra de gebruiker deze gekozen heeft dat de velden contactpersoon1 t/m 5 gevuld worden met de gegevens Contact1 t/m 5 van de tabel Instanties. Nu lijkt het me logisch om dit te doen bij het Standaardwaarde in de eigenschappen van het veld. Is dit de juiste methode en wat voor formule moet ik dan gebruiken, zodat ik de contacten die bij de overeenkomende instantie in het informatieformulier krijg?

Ik hoop dat ik duidelijk genoeg ben geweest.
Voor de zekerheid heb ik een voorbeelddatabase bijgesloten die overeenkomt met hetgeen ik hierboven beschrijf.
Mijn bedoeling is dus dat als ik een record invoer en bijvoorbeeld ziekenhuis kies in het Informatieformulier, dat dan de namen van contactpersonen die bij ziekenhuis automatisch worden ingevuld op het formulier.
 

Bijlagen

Je kan hierbij gebruik maken van DLookup.

Dit moet je dan wel voor elke veld gebruiken, alle contactpersonen velden.

Zoek even in de help wat DlookUp inhoud en hoe je dit kan toepassen.

Groeten,

Remco
 
Waarom wil je gegevens die je al in een tabel opgeslagen hebt nogmaals in een andere tabel opslaan (redundantie). Er zit bij jou een relatie tussen die 2 tabbellen, met een query kun je deze makkelijk per naam selecteren. Bovendien moet je bij een wijziging op 2 plaatsen je data wijzigen.
Niet doen dus.

Makaai:thumb:
 
Geplaatst door makaai
Waarom wil je gegevens die je al in een tabel opgeslagen hebt nogmaals in een andere tabel opslaan (redundantie). Er zit bij jou een relatie tussen die 2 tabbellen, met een query kun je deze makkelijk per naam selecteren. Bovendien moet je bij een wijziging op 2 plaatsen je data wijzigen.
Niet doen dus.

Makaai:thumb:

De reden is dat als ik in de eerste tabel iets wijzig, dit niet doorgevoerd moet worden in de tweede omdat ik altijd moet kunnen terugkijken wie destijds de contactpersonen waren, en de contactpersonen wijzigen nogal eens.
Bovendien heb ik de mgelijkheid nodig om de namen in het informatieformulier te wijzigen, dus zijn het eigenlijk initiële waarden en niet per definitie de juiste (afhankelijk van wie ik soms aan delijn krijg).
 
Laatst bewerkt:
Dan nog is het verstandiger om de gegevens niet in de eerste tabel op te slaan.
In de tabel Instanties moet je een uniek veld (bijv. autonummering) hebben die je als sleutel gebruikt (InstantieID).
In de tabel Informatieformulier moet je nu ook een veld hebben bv. instantieID waarmee je de koppelng maakt met Instanties. Je formulier baseer je nu op een query met gegevens van deze 2 tabellen (met gegevens van de oudste datum uit Instanties).
Door de gegevens op deze manier op te slaan hou je ook de historie over een langere periode vast en heb je minder problemen met onderhoud etc.

Maar als je niet al te veel poespas wil en je huidige methode aan je eisen voldoet, ook goed natuurlijk...

Makaai:thumb:


Bij vlagen ben ik geniaal, helaas is het hier altijd windstil.

Weleens overwogen om naar New Orleans te verhuizen?:D
 
Makaai, als ik het niet dubbel op sla kan het toch niet werken?

Stel ik kies instantie Ziekenhuis dan moet hij zoeken in tabel 1 naar ziekenhuis en de bijbehorende contactpersonen invullen. Maar..... als contactpersoon 3 deze keer iemand anders is, dan moet ik het in de tweede tabel aan kunnen passen en opslaan. Zodat ik later kan zien dat ik bij deze instantie nu een ander contacpersoon heb gehad.

Hoe gaat dat dan werken?
 
Je moet je gegevens verzameling gaan normaliseren, dan wordt het allemaal veel duidelijker.

Je hebt een tabel Ziekenhuis, hierin staan absoluut geen persoonsgegevens (ID (autonummer), Naam (tekst) etc.).
Je hebt een tabel Persoon. hierin staan absoluut geen ziekenhuis gegevens (ID (autonummer), Voornaam (tekst), Achternaam (tekst) etc.).
Je hebt een tabel RolPersoon, dit is een code tabel met twee velden ID (autonummer, sleutel) en fldRol (bevat waarden als contactpersoon, werknemer etc.)

Vervolgens heb je voor het vastleggen van de personen die een relatie met het ziekenhuis hebben een tabel ZiekenhuisPersoon met de velden (ID (autonummer), IDZiekenhuis (long, verwijzing naar ID in tabel Ziekenhuis), IDPersoon (long, verwijzing naar ID in tabel Persoon), IDRol (long, verwijzing naar ID in tabel Rol), DatumBegin (datetime), DatumEind (datetime), etc)

In deze laatste tabel leg je de relatie vast tussen het ziekenhuis en een persoon en wat voor soort relatie dat is (de rol dus). Ook leg je in deze tabel vast voor welke periode de relatie geldt.
Op deze manier kun je vastleggen wie wanneer contactpersoon is, was en kun je zelfs meerdere contactpersonen bij een ziekenhuis registreren.

Zo zie je maar weer, eerst goed nadenken over je gegevens. Dan een goed datamodel ontwerpen en dan pas gaan programmeren kan je een hoop gekloo##### besparen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan