Calculatie veld opslaan in tabel

Status
Niet open voor verdere reacties.

Htt_wng

Gebruiker
Lid geworden
9 jul 2005
Berichten
58
Goedemiddag,

Ik heb in acces een calculatie formulier opgemaakt.

Met SQL management studio heb ik zover gekregen dat ik vanuit Acces de artikelen + kostprijs kan oproepen die in een database staan van een ERP systeem

In mijn acces calculatie formulier heb ik veld aangemaakt waar het volgende wordt berekent: De kostprijs van een artikel (deze komt uit het ERP systeem) keer de aantallen (dit word in acces ingevuld). Dit is gelukt en de berekening klopt ook maar deze word niet in een veld opgeslagen in een tabel. De uitkomst van de calculatie moet worden bevroren. Wanneer ik in het ERP systeem de kostprijs veranderd van de dezelfde artikel wordt deze ook gelijk meegenomen in de calculatie waardoor de historie van mijn eerder gemaakte calculatie niet meer klopt. Heeft iemand hier een oplossing voor?

mvg,
 
Laatst bewerkt:
Als je het berekende veld aan een tabelveld koppelt, wordt de berekening opgeslagen met de huidige waarden. Prijswijzigingen hebben dan geen invloed meer.
 
Bedankt voor je reactie OctaFish. Goed om te horen dat dit geen probleem moet zijn.
Kunt u mij vertellen hoe je een berekend veld aan een tabelveld koppelt? De berekening heb ik in besturingselement (eigenschappen van het veld)waardoor ik dus niet meer kan aangeven waar de waarde word opgeslagen
 
Laatst bewerkt:
Een object kan maar één Besturingselementbron hebben, dus die moet je aan het veld koppelen. De berekening moet dus op één van de andere velden worden gezet, en de uitkomst ervan zet je in het tekstvak.
 
Schermafbeelding 2013-08-20 om 10.20.22.jpg Octafish ik snap niet wat je bedoeld, ik heb hierbij een screenshot gemaakt van me formulier en de berekening. Zoals je ziet heb ik de berekening van de totale prijs in het besturingselementbron gezet. Als ik het goed begrijpt moet in plaats van de berekening een veld worden uitgekozen van de tabel waar de totale bedrag word opgeslagen. Wanneer ik dit doet is de berekening ook weg en krijg ik geen totaal bedrag te zien. Waar moet ik de berekening dan invullen.
 
Je komt een heel eind, ook al snap je het niet :). Het veld is nu goed gekoppeld. De berekening moet je bij één (of alle) velden laten maken die beruikt worden in de formule. Bij voorkeur bij de gebeurtenis <Na bijwerken> van die elementen. De formule wordt dan iets als:
Code:
Me.txtUitkomst = Me.Veld1 * Me.Veld2 + 22% * Me.Veld3
Dit voorbeeldje is uiteraard dummy code; ik kan je formule niet goed lezen in het plaatje.
 
Octafish ik heb het volgende gedaan.

Bij de besturingselement bron heb ik de volgende berekening weggehaald:
Code:
=CDbl([txt_Product_Prijs_Ton])+CDbl([txt_Toevoegen_1%_Zwartsel_Ton1])
Vervolgens heb ik bij dezelfde veld een kolomnaam van het tabel uitgekozen waar de waarde moet worden opgeslagen. Dit kolomnaam heet Totaal_Product_prijs

Ik heb vervolgens bij "gebeurtenis" in het veld "na bewerken" het volgende volgende berekening ingezet namelijk:
Code:
Me.[txt_Totaal_product] = Me.txt_Product_Prijs_Ton + Me.txt_Toevoegen_1%_Zwartsel_Ton

De uitkomst van de berekening word nu niet meer in het tekstveld txt_Totaal_product weergegeven in het formulier in plaatst daarvan komt de waarde 0,00 te staan. De waarde 0,00 word ook weggeschreven naar het kolomnaam Totaal_Product_prijs in het tabel. Ik denk zelf dat ik iets verkeerds doe met de berekening.

Komt dit misschien omdat de waarde die in txt_Product_Prijs_Ton en txt_Toevoegen_1%_Zwarstel_Ton ook niet word opgeslagen in de tabel?
De berekening voor deze 2 velden ziet is iets anders, deze waarde haalt die op uit de keuzetabel met een column verwijzing.
Voorbeeld
Code:
=IIf([txt_artikelcode] Is Null;0;(txt_artikelcode.Column(3)))
Ook heb ik deze berekening in het Besturingelementbron gezet dus niet gekoppeld naar een tabel

Even voor de duidelijkheid.

Kolomveld in tabel
Product_prijs
Zwartsel
Totaal_product_prijs

Velden in formulier
txt_Productprijs_Ton (deze waarde komt uit een keuzelijst met een verwijzing naar een kolom, de berekening is
Code:
=IIf([txt_artikelcode] Is Null;0;(txt_artikelcode.Column(3)))
txt_Toevoegen_1%_Zwarstel_Ton (deze waarde komt uit een keuzelijst met een verwijzing naar een kolom, de berekening is
Code:
=IIf([Offz_Toevoegen_1%_zwartsel_Omschrijving1] Is Null;0;([Offz_Toevoegen_1%_zwartsel_Omschrijving1].Column(2)))
txt_Totaal_product ( Dit is een waarde die voort komt uit de 2 vorige velden namelijk:
Code:
=CDbl([txt_Product_Prijs_Ton])+CDbl([txt_Toevoegen_1%_Zwartsel_Ton])
De berekeningen staan op het besturingselementbron.
Schermafbeelding 2013-08-20 om 12.33.43.jpg
 
Laatst bewerkt:
De formules moeten staan op de velden die de informatie leveren. Dus niet op het veld dat de informatie krijgt. Dat veld krijgt dus geen <Na bijwerken>. De tekstvelden veranderen niet (althans niet door mensenhanden) maar worden gevuld vanuit de Keuzelijsten. De formules moeten dus op de Keuzelijsten worden gezet.
 
OctaFish bedankt voor je uitleg en voor je tijd. Ik krijg het nog steeds niet voor elkaar. Ik heb de formule in de keuzelijst gezet zoals jij het hebt beschreven maar dan krijg ik een foutmelding. In de foutmelding staat in " Kan de macro Me niet vinden". Ik heb nu een proef versie gemaakt. Zoals je ziet heb ik een keuzelijst met een aantal velden onder, deze velden worden aangevuld door de keuzelijst, bijvoorbeeld het veld txt_Artikel_omschrijving. In de keuzelijst heb ik <na bewerken> het volgende formule neergezet.

Code:
Me.txt_Artikel_omschrijving = Me.dd_artikelcode.Column(1)

Schermafbeelding 2013-08-21 om 11.08.34.png

Ik weet echt niet wat ik verkeerd doe.
 
Laatst bewerkt:
De formule die je nu in de regel hebt gezet moet in de Functie <na bijwerken> staan. Je hebt de functie vervangen door de formule. Wegknippen dus, en daarna op de knop met d drie puntjes klikken en daar dan de formule plakken.
 
Ik heb de formule nou in een expressie gezet maar krijg de volgende foutmelding.

Schermafbeelding 2013-08-21 om 12.06.51.png
 
Je moet de rechte haken [Me].[txt_Artikel_omschrijving] weghalen. Dus het moet Me.txt_Artikel_omschrijving worden en dat geld ook voor de rest van je formule.
 
Laatst bewerkt:
gast0224 ik heb geprobeerd om de haakjes weg te halen maar die komt automatisch weer terug.
 
gast0224 en Octafish het is mij gelukt ik heb in Visual basic opgelost :D ziet als volg uit:
Code:
Private Sub txt_artikelcode_AfterUpdate()
Tekst130 = txt_artikelcode.Column(2)
Tekst134 = txt_artikelcode.Column(1)
End Sub
 
Laatst bewerkt:
Oeps ik heb een oude bericht aangepast. Maar gast0224 en OctaFish het is mij gelukt door middel van Visual Basic. Het ziet er als volgt uit:
Code:
Private Sub txt_artikelcode_AfterUpdate()
Tekst130 = txt_artikelcode.Column(2)
Tekst134 = txt_artikelcode.Column(1)
End Sub

Ben er heel blij mee en wil jullie bedanken voor jullie tijd en uitleg:D ik zet dit draadje als opgelost
 
En dat is precies wat ik je al die tijd al duidelijk probeer te maken :)
 
OctaFish, Ja ik ben nog een nieuw in acces maar bedankt voor je uitleg. alleen ik heb nog 1 vraag nou wil ik een prijs veld invullen maar dit lukt niet. Voorheen had ik bij de besturingselementbron het volgende neergezet.
Code:
 =IIf([txt_artikelcode] Is Null;0;(txt_artikelcode.Column(3)))
Dit werkte als volgt wanneer ik een geen keuze heb gemaakt uit de keuzelijst dan word in het prijs veld een standaardwaarde ingevuld,in dit geval 0

Nou heb ik heb deze formule gekopieerd naar het Visual basic.
Code:
Private Sub txt_artikelcode_AfterUpdate()
Tekst130 = txt_artikelcode.Column(2)
Tekst134 = txt_artikelcode.Column(1)
txt_Product_Prijs_ton = IIf([txt_artikelcode] Is Null;0;(txt_artikelcode.Column(3)))
End Sub

De laatste regel met txt_Product_Prijs_ton word in het rood weergegeven,dus ik neem aan dat de regel niet klopt terwijl dit voorheen wel werkte wanneer ik in het besturingselement had gezet.
 
Haal de IIF weg en vervang hem overal door Nz(txt_artikelcode.column(3),0).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan