Deze vraag is al vaker langsgekomen, en ook in de cursus Access behandeld

. Maar ik snap wel dat het zoeken van de oplossing op het forum lastig is, want zelf loop ik daar ook regelmatig tegenaan. Zelfs als ik wéét dat een vraag/oplossing al aan bod is geweest, kan ik dat antwoord meestal niet vinden

.
Eigenlijk is het niet zo moeilijk. Je hebt de tabellen neem ik aan aan elkaar gekoppeld ([Artikelen].[ArtikelID] --> [Voorraad].[ArtikelID]) zodat er Referentiële Integriteit is tussen de twee tabellen, en op je formulier heb je een keuzelijst met invoervak gemaakt om het artikel te kiezen. Die keuzelijst heb je dan, als het goed is, gekoppeld aan het veld ArtikelID in de tabel Voorraad.
Normaal gesproken zou het genoeg zijn, bijvoorbeeld in het geval van Personen, om de extra velden gewoon uit de gekoppelde tabel te halen. In het geval van personen, op een Facturen formulier/rapport, waar je de adresgegevens óók wilt zien, kun je die velden er gerust bij zetten. Zodra je een persoon kiest, worden de overige velden gelijk ingevuld. Als de persoon verhuist, zie je de volgende keer het nieuwe adres. Prima. Maar dat is niet handig bij Artikelen, waar de prijs nu eenmaal van fluctueert, dus je wilt de
actuele prijs zien, die
niet meer verandert als je in de tabel Artikelen de prijzen muteert. De prijs moet dus
in de tabel worden opgeslagen. Overigens zet ik grote vraagtekens bij je werkwijze, want de
prijs van een artikel heeft
niets te maken met de
voorraad van dat artikel. Ik heb (en zou dat ook nooit doen) nog nooit een systeem gemaakt waarbij in de
Voorraadtabel ook
Artikelprijzen worden opgeslagen. Nutteloze informatie. Ik gebruik de onderstaande techniek alleen op plekken waar het in mijn ogen nodig is: verkoop transacties en facturen. En aanverwante tabellen.
Om het verhaal af te maken (ik ga dus voor mijn eigen gemoedsrust verder met het opslaan van prijzen in een Verkoop tabel): in de tabel VerkoopDetails heb je dus het veld ArtikelID, én het veld Prijs opgenomen (naast uiteraard Aantal stuks). De keuzelijst waarmee je het artikel selecteert, bevat, naast de velden ArtikelID en ArtikelNaam, ook de velden Prijs en Eenheid. En die twee gegevens wil je dus toevoegen aan de tabel VerkoopDetails als je een artikel selecteert. Dat doe je dan met een stukje code, op basis van de gebeurtenis <Bij Klikken> van die keuzelijst. Die code ziet er dan ongeveer zo uit:
Code:
Private Sub cboArtikel_Click()
With Me.cboArtikel
Me.Prijs.Value = .Column(2)
Me.Eenheid.Value = .Column(3)
End With
End Sub
Daarbij ga ik even uit van de veldvolgorde zoals hierboven beschreven voor de keuzelijst: ArtikelID, ArtikelNaam, Prijs, Eenheid. Heb jij die anders, dan moet je de getallen in de code aanpassen. Kijk maar even of je er zo uit komt. En denk nog even goed na over het idee om
Prijzen op te nemen in een Voorraad tabel. Lijkt mij dus nergens voor nodig.