Link naar record in formulier, in keuzelijst

Status
Niet open voor verdere reacties.

Sonnetje85

Gebruiker
Lid geworden
28 nov 2012
Berichten
102
Hallo,

Mijn eerste tabel (met formulier) bevat personeelsleden, met als primaire key het personeelsnummer
Hier hangt een query aan die de voor- en achternaam van de in dienst zijnde personeelsleden in een tabel zet (dus alle oud-werknemers worden eruit gefilterd en de voor en achternaam worden in 1 cel geplaatst)

In een 2e tabel staan klanten. Hier kun je door middel van een keuzelijsten personeelsleden kiezen:
vaste contactpersonen en invallers daarvoor die op de hoogte zijn

Als ik nu een klant opzoek, zou ik graag op de naam van de invaller willen klikken en dan automatisch naar zijn/haar record in het formulier personeel gaan

Kan dit?
 
Wat heeft die query daar mee te maken? Ik neem aan dat je in de tabel Klanten een personeelsnummer opneemt, om de gegevensintegriteit met tabel 1 te waarborgen. Dus dat moet altijd kunnen.
 
Ik heb geen personeelsnummer in klanten, alleen de combinatie [voornaam]+[achternaam] van het personeel
Hoe kan ik daar een link van maken?
 
Niet doen; als je een tabel Personeel hebt met een Personeelsnummer, en je wilt die koppelen aan je klanten, dan neem je in die tabel ook het Personeelsnummer op. Je maakt vervolgens een één-op-veel relatie tussen Personeel en Klanten. Dat is de enige juiste weg.
 
De tabel personeel is via personeelsnummer gekoppeld aan de query personeel actueel
Deze query is via een 1 op veel relatie van naam gekoppeld aan invaller1, invaller2 en invaller3 in de tabel klanten
Ik wil namelijk niet dat oud-personeelsleden in de keuzevakken op het formulier klanten als invaller te kiezen zijn

Helaas is mijn kennis van Acces nog niet zo goed dat ik het linken voor elkaar krijg...
 
De tabel personeel is via personeelsnummer gekoppeld aan de query personeel actueel
Deze query is via een 1 op veel relatie van naam gekoppeld aan invaller1, invaller2 en invaller3 in de tabel klanten
Slecht idee, zoals ik al zei. Queries koppel je niet aan tabellen, want dat is vrij zinloos. Tabellen moet je aan elkaar koppelen als er gerelateerde gegevens zijn, zoals in jouw geval. En jouw argument is ook helemaal geen argument, want oud-werknemers kun je heel makkelijk wegfilteren uit een keuzelijst. Ik denk inderdaad dat je basiskennis van Access nog wat aan de lage kant is ;)
Zolang je in de tabel Klanten geen veld PersoneelsID opneemt, gaat dat koppelen nooit lukken.
 
Dan zou ik op basis van de naam het personeelsnummer uit de query kunnen halen en in de tabel klanten plaatsen?
 
Dat hangt van je gegegens af. Eén van de nadelen van je huidige constructie is dat je een voornaam+achternaam maar één keer kan gebruiken. Dat gaat bij kleine tabellen vaak nog wel goed, maar hoe groter de tabel, hoe groter de problemen. In de tabel zou je bijvoorbeeld deze twee records kunnen hebben:
PersNr Voornaam Achternaam Bedrijf
12 Piet Akkermans Philips
53 Piet Akkermans Grundig
Als je alleen op Voornaam + Achternaam koppelt, ben je de sigaar want er zijn twee Pieten Akkermans. Dus welke ga je gebruiken? Access kan hier niks mee. Koppel je op Personeelsnummer, dan is het duidelijk, want personeelsnummer is Uniek, dus dat gaat altijd goed. De eerste situatie is op te lossen door van Voornaam + Achternaam een unieke index te maken, maar dan moet je de personeelsfunctionaris van Grundig gaan bellen met de vraag of hij werknemer Piet Akkermans wil vervangen door iemand met een andere naam.... Lijkt mij geen goed plan.
 
Die kans is bij ons niet zo groot, want we zijn maar een klein bedrijf met 1 vestiging
Maar toch wil ik het graag op een goede manier leren
Belangrijk is dat er mensen met de database gaan werken die er (nog) minder verstand van hebben dan ik
Als zij de database starten krijgen ze dus een startscherm met knoppen en geen navigatiedeelvensters ed
Het moet echt gebruiksvriendelijk worden

Ik heb dus een tabel personeel, met personeelsnummer als id, maar niemand hier weet die nummer uit zijn/haar hoofd
Dus bij (3 mogelijke) invallers (in het formulier klanten) moet er uit een dropdown menu gekozen kunnen worden
Daar dus de combinatie van voor en achternaam van het personeel, want de kans dat 1 van beide dubbel voorkomt is er dus wel

Kun je me aangeven hoe ik dit op de "goede" manier vorm moet gaan geven?
 
De keuzelijst met invoervak werkt eigenlijk (zeker als je hem met de wizard maakt) heel simpel: je kiest de velden die je wilt zien (voornaam, achternaam evt. met een sortering) en Access voegt daar zelf al het sleutelveld (PersID in dit geval) aan toe, en maakt dat onzichtbaar. Je ziet de sleutelwaarde dus niet, en hoeft die ook niet te weten. In de keuzelijst zie je alleen de namen, maar Access slaat het nummer op. Beter kan derhalve niet!
 
In de tabel klanten moet (neem ik aan) opgeslagen worden wie invallers kunnen zijn
Dus heb ik daar 3 kolommen met de namen "Invaller1", "Invaller2" en "Invaller3"
Op het formulier heb ik de bijbehorende vakken gewijzigd in "keuzelijst met invoervak"
Ik kan daar geen wizard kiezen, deze staat wel in de Ontwerpbalk aangevinkt, maar in de lijst is hij grijs
Wil je me stap voor stap vertellen wat ik nu moet doen?
 
Je kunt (dat ik dat ooit nog zou aanbevelen :) ) met één veld volstaan in Access 2010, als je dat instelt op <meerdere waarden>. Dan ben je ook niet gebonden aan een maximum voor de invallers, dus je houdt je tabel een stuk overzichtelijker en beter bruikbaar. Want je moet er naar streven om één entiteitstype op te slaan in één veld. En dat principe gaat niet op voor velden als "Invaller1", "Invaller2" en "Invaller3", want dat is een herhaling.
 
Goed, en dan graag stap voor stap?
Dus stap 1 is een kolom maken in de tabel Personeel waar =[Voornaam] & " " & [Achternaam] in moet... maar waar vul ik dat in?
Stap 2 is in de tabel Klanten 1 veld Invallers te noemen
 
Goed, en dan graag stap voor stap?
Dus stap 1 is een kolom maken in de tabel Personeel waar =[Voornaam] & " " & [Achternaam] in moet... maar waar vul ik dat in?
Juist niet! Vergeet =[Voornaam] & " " & [Achternaam]!
Stap 1 is in de tabel Klanten een veld [Invaller] te maken. Gebruik je de Wizard Opzoeken, dan kun je een keuzelijst maken in de tabel op basis van de tabel Personeel. In dit proces geef je de velden aan die je wilt zien (Voornaam en Achternaam bijvoorbeeld) en Access voegt dan zelf Personeelsnummer toe. Ook geef je aan dat je meerdere waarden in het veld wilt opslaan. Dit kun je later niet meer aanpassen (als je zou kiezen voor een enkelvoudig veld) dus dat moet je niet vergeten.
En meer is het eigenlijk niet! Als je de tabel opslaat en gaat gebruiken, dan krijg je, als je in het veld Invaller klikt, een keuzelijst met alle namen van de personen met een selectievakje ervoor. Hier klik je dan de personen aan die je wilt opslaan. En meer is het niet.
 
De lijst is gelukt, wel jammer dat de namen niet direct achter elkaar komen te staan, maar daar doen ze het maar mee.
Nu moeten alleen alle medewerkers met "Soort dienstverband" = Beëindigd, uit de lijst gefilterd worden
 
Als het goed is kun je dat in de Rijbron van je keuzelijst aanpassen. Die vind je als je in het tabelontwerp het veld selecteert en onderin op het tabblad <Opzoeken> klikt. Daar staat nu als het goed is bij <Weergave> 'Keuzelijst met invoervak' en bij <Rijbron> een query. Als je die selecteert en op de knop met 3 puntjes klikt, kom je in het Query scherm waar je een criterium kunt instellen op het veld [Soort dienstverband]. Ik laat je nog even broeden op het criterium zelf :)
 
Ja zover ben ik dan weer wel ;)
Dit is nu helemaal gelukt in de tabel, ik kan mooi vinkjes zetten bij de juiste personen
Maar... Mijn collega's gaan niet in de tabel werken dus nu nog werkend krijgen in het formulier
Nu krijg ik daar wel het vak, met pijltje omlaag, maar de lijst is leeg
Als ik in de tabel de juiste mensen selecteer, krijg ik 1 van de personeelsnummersd te zien...
 
Als het goed is moet je op het formulier nu een keuzelijst kunnen maken die er hetzelfde uitziet qua gegevens. Misschien moet je de bestaande weggooien en hem opnieuw maken; een keuzelijst past zich namelijk niet aan als je de tabel verandert.
 
In het formulier krijg ik netjes een uitklaplijst, kan ik mooi vinkjes zetten en "ok" klikken
Dan staan echter alleen de voornamen in het vak zichtbaar...

En dan natuurlijk terug naar het topic, hoe maak ik nu links van de namen?
 
Een keuzelijst laat altijd maar één veld zien na het bijwerken. Klap je de lijst uit, dan zie je de andere velden die in de Rijbron staan. Dus bij het selecteren zie je alles, daarna het eerste zichtbare veld. Daar is niks aan te doen. Logisch zou zijn om het veld Achternaam dus als eerste te laten zien, en niet Voornaam. Wèl zou je een veld kunnen toevoegen aan je query waarin je andere velden samenvoegt. Het effect blijft hetzelfde (je slaat het sleutelveld nog steeds op en je ziet maar één kolom) en dat zou dan dus dat samengestelde veld kunnen zijn. Of, je maakt extra tekstvelden en je koppelt die aan de keuzelijst zodat je andere velden uit die keuzelijst kunt laten zien. Het tekstveld krijgt dan deze Besturingselementbron:
Code:
=cboPersoneel.Column(#)
Waarbij het hekje het kolomnummer -1 is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan