Even recapituleren: je hebt een tabel met o.a. artikelprijzen, die getoond worden in een formulier. Deze informatie komt uit een prijslijst. Bij het maken van orders moeten de artikelprijzen wel op het formulier getoond worden, en ze mogen ook worden aangepast, maar ze mogen niet worden veranderd in de brontabel.
Mag ik aannemen, dat de prijs wèl moet worden opgeslagen bij de orders?
Dat zou namelijk de meest logische oplossing zijn: het formulier zou moeten dienen als basis om nieuwe orders op te slaan, niet om de prijslijstgegevens te muteren.
Op het moment dat het formulier als basis dient voor orders, is het ook mogelijk om het veld met de prijzen los te koppelen. Nu staat de bron van het formulierveld ingesteld op de prijslijst, met als gevolg dat elke wijziging direct in de prijslijst wordt doorgevoerd. Het formulierveld moet daarom ontkoppeld worden, door de inhoud van de veldeigenschap <Besturingselementbron> leeg te maken.
Dat werpt wel weer een nieuw probleem op: hoe vul je het veld met de standaardprijs? Dat kun je doen door een keuzelijst te gebruiken voor het Artikelnummer. Hiervoor moet je dan een query als bron gebruiken, met daarin het ArtikelID, de ArtikelNaam, en de ArtikelPrijs. Vermoedelijk staan al deze velden wel in de tabel Prijslijst. Door de eerste kolom een breedte van 0 cm te geven, zie je het artikelID niet, en kun je selecteren op artikelnaam.
Voor het veld Prijs moet een normaal tekstveld worden gebruikt, geen keuzelijst. De prijs van het artikel zit a.h.w. in de keuzelijst Artikel, en kan met de gebeurtenis <Na Bijwerken> op het tekstveld worden gezet.
Dat ziet er in code ongeveer zo uit:
Me.txtArtikelPrijs = [cboArtikel].[Column](2)
Hierbij ga ik er vanuit, dat de keuzelijst uit de hierboven aangegeven 3 velden bestaat. De opdracht Column telt namelijk vanaf 0.
Doordat het tekstveld ArtikelPrijs nu niet meer gebonden is aan een bron, kun je het probleemloos aanpassen, je zult geen wijzigingen meer doorvoeren in de tabel Prijslijst. Wel moet de informatie worden opgeslagen in de tabel Orders, zoals ik zelf zou doen. Ik zou dus het formulier baseren op de tabel Orders, en het veld ArtikelPrijs uiteraard ook.
Michel