Vullen van meerdere velden in frm

Status
Niet open voor verdere reacties.

bverhoof

Gebruiker
Lid geworden
10 jan 2003
Berichten
41
Ik heb een tbl met art en prijs ( in euro) nu wil ik in een frm een keuzelijst Art maken met daarnaast veld prijs in euro's hoe krijg ik de prijs gevuld als ik een keuze maak uit de artikelen keuzelijst
Thnx bernard
 
Je wilt de prijs zien in een los tekstveld als je een artikel kiest? Daarvoor zijn 2 oplossingen, waar je in ieder geval even over moet nadenken.
Wat is het probleem? als je artikelen verkoopt, heb je in beginsel genoeg aan het artikelID in de bestellingentabel. Op basis van ArtikelID kun je namelijk altijd de prijs opzoeken van het artikel. Probeem echter, is dat je daarmee de prijs dynamisch maakt. Als je dus de prijs verhoogt of verlaagt, dan gebeurt dat automatisch ook in de eerder geleverde orders. En dat mag uiteraard niet, want dan klopt je boekhouding niet meer.
Dat kun je dus op 2 manieren oplossen: a) door de prijs die op het moment van bestellen geldt op te nemen in de order tabel, of b) een tabel te gebruiken waarin je de prijsmutaties bijhoudt. In het laatste geval kun je de juiste prijs altijd terugvinden van de bestelling.

De tweede oplossing is het lastigst te maken, dus meestal kiezen mensen voor de eerste oplossing. Die houdt dus in dat je in je tabel Orders twee velden gebruikt: ArtikelID en Prijs. De prijs moet dan gevuld worden op het moment van artikel kiezen. Dus een actie <Bij Klikken> van de keuzelijst cboArtikel die in de actie het veld Prijs vult met bijvoorbeeld deze opdracht:
Code:
     Me.Prijs.Value = Me.cboArtikel.Column(2)
(2) is uiteraard een gok; normaal gesproken is de eerste kolom het ArtikelID, de tweede de Artikelnaam en de derde de prijs.
 
Dank voor je reactie ik ga er morgen mee aan de gang ik laat je het resultaat weten gr Bernard
 
Ik kan geen rar bestanden openen op het werk, dus als ik er overdag naar moet kijken, dan graag een zipje maken. Je vraag zelf lijkt mij simpel op te lossen door het tekstveld waar de berekeningen in staan op te maken met de Valuta notatie. Al dan niet zelf ingetypt.
 
Hardnekkig, inderdaad :)
Je kunt dit eens proberen, waarbij je de tekstvelden dus niet-afhankelijk maakt.
Code:
Private Sub Keuzelijst0_Click()
    Me.txtPrijs = Format(Me.Keuzelijst0.Column(1), "Currency")
    Me.txtPrijsEx = Format(Me.Keuzelijst0.Column(2), "Currency")
End Sub
In het voorbeeld heb ik dus 2 nieuwe tekstvelden erbij gezet met de resp. objectnamen.

Overigens zag ik dat je in de db gebruik maakt van een berekend veld..... Daarmee scoor je bij mij geen pluspunten :).
 
test db

beste dank voor je reactie

wat zou jouw alternatief zijn voor het berekende veld in mi n tbl
 
Berekende velden sla je niet op in een tabel maar je geeft de uitkomst van je berekening enkel weer in een formulier en/of rapport; telkens je dat formulier of rapport nml opent worden die berekeningen toch opnieuw uitgevoerd.
 
Dat is een belangrijke reden; een andere is dat je nu dataredundantie hebt (dubbele gegevens), wat nergens voor nodig is, en (zeker niet de minst belangrijke) je raakt in één keer alle compatibiliteit met andere database systemen kwijt. Upgraden naar SQL server bijvoorbeeld kan nu niet. Hou alles netjes genormaliseerd en volgens de officiële database structuren. Het Microsoft Access Ontwikkelteam heeft geen flauw benul van hoe een database hoort te werken... Ik verdenk ze ervan dat er een vette bonus staat op de ontwikkelaar die de grootste onzin in de volgende nieuwe versie weet te krijgen. We hebben daar in ieder geval al een hoop flauwekul aan overgehouden :).
 
test db

beste resultaat mbv
Private Sub Keuzelijst0_Click()
Me.txtPrijs = Format(Me.Keuzelijst0.Column(1), "Currency")
Me.txtPrijsEx = Format(Me.Keuzelijst0.Column(2), "Currency")
End Sub
resulteert niet in veld met euro teken
 
Je kunt voor het veld prijs in de besturingselementbron misschien het volgende zetten?
Code:
="€ " & FormatNumber([Keuzelijst0].[column](1);2)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan