som van 5 velden in 6de veld laten plaatsen

Status
Niet open voor verdere reacties.

Dj NRG

Gebruiker
Lid geworden
22 mrt 2009
Berichten
49
Hey

heb een tabel met voor elke klant max 5 bedragen (velden kunnen ook leeg blijven)

graag had ik in het 6de veld automatisch de som van de andere 5 velden... wss is dit heel makkelijk, maar ik zie het niet direct staan... kan iemand me helpen? (ps: men kennis van access is zeer beperkt)

alvast bedankt


mvg

Nico
 
Hallo Nico,

Wat jij wil kan met een Bijwerkquery, waarmee je veld6 bijwerkt met de formule Veld1+Veld2+Veld3+Veld4+Veld5.

In SQL taal:

Code:
UPDATE VeldenOptellen SET VeldenOptellen.Veld6 = [veld1]+[veld2]+[veld3]+[veld4]+[veld5];

In lekentaal: zie bijgaande afbeelding. Wat op het plaatje niet staat: je moet het type query veranderen van Selectiequery naar <Query bijwerken> in het menu Query.

Een mooiere optie is om een formulier te maken, waar je alle velden op laat invullen, en waarmee je automatisch Veld6 kan laten berekenen en invullen. Maar dat is iets meer werk.

Michel
 

Bijlagen

  • VeldenOptellen.jpg
    VeldenOptellen.jpg
    18,8 KB · Weergaven: 57
Laatst bewerkt:
Hey Michel

bedankt voor je reactie..

het is inderdaad de bedoeling om dit via een formulier te laten gebeuren (was dit vergeten te vermelden, waarvoor mijn excuses).

hoe gaat dit dan juist in zen werk?

mvg

Nico
 
Dat kan relatief simpel.
Er vanuit gaande dat je een formulier hebt gemaakt dat op je tabel is gebaseerd, en dat je gebruikt voor de invoer van je gegevens, zet je in de eigenschappen van de velden 1 t/m 5 een formule bij de Gebeurtenis <Na bijwerken>:

Code:
Me.txtVeld6.Value = Val(Me.txtVeld1.Value) + Val(Me.txtVeld2.Value) + Val(Me.txtVeld3.Value) + Val(Me.txtVeld4.Value) + Val(Me.txtVeld5.Value)

Je kan deze code maken bij Veld1, en vervolgens kopieren naar de velden 2-5. Je wilt uiteraard dat de waarde in Veld6 wordt bijgewerkt bij elke verandering van 1-5.
Tevens zet je van Veld6 de eigenschappen Gegevens <Ingeschakeld> op Nee, en <Vergrendeld> op Ja, zodat je niet handmatig in Veld6 wijzigingen kunt aanbrengen.

Zoals je misschien weet, zijn tekstvelden ook echt alleen tekst, dus m.b.v. de opdracht 'Val' maak je er eerst een getalwaarde van, zodat je kunt optellen.
Eventueel kun je eerst de ingevoerde waarde checken met de opdracht

Code:
If Not IsNumeric(txtVeld1) Then
    ....
End if

waarna je bijvoorbeeld het veld leegmaakt, zodat de gebruiker wel verplicht is een getal in te vullen. Deze check zet je ook in dezelfde gebeurtenis <Na bijwerken>, maar uiteraard voor de berekening.

Kun je weer verder?
 
:s

bedankt voor je reactie, maar het lukt me niet echt :s

ff stap voor stap wat ik gedaan heb:

ik open form in ontwerpweergave
ik klik op men eerste veld (schijf1)
ik ga bij eigenschappen naar gebeurtenis -> na bewerken
ik klik daar op en selecteer [gebeurtenisprocedure]
vervolgens klik ik daar op die drie puntjes ...
ik plak die code der in
Code:
Me.totaalschijf.Value = Val(Me.Schijf1.Value) + Val(Me.Schijf2.Value) + Val(Me.Schijf3.Value) + Val(Me.Schijf4.Value) + Val(Me.Schijf5.Value)

en doe da bij de andere velden ook (behalve natuurlijk het veld totaalschijf)

en toch lukt dit niet... krijg een foutmelding (ongeldig buiten procedure)

wat doe ik verkeerd? :s
 
Ik heb m'n voorbeeldje op m'n werk gelaten, dus ik maak wel even een nieuwe. Ondertussen even jouw stappen doornemen:
Op zich doe je alles goed, want zo heb ik het ook gedaan. Aan de formule mankeert verder ook niks. Wat is de foutmelding die je krijgt?

Wat je zou kunnen proberen: controleer eerst of je de juiste bibliotheken wel hebt geladen; zodra je met VBA code gaat programmeren op formulieren, wil Access bepaalde bibliotheken geactiveerd hebben. Je kunt dat checken door in de VBA-editor naar Extra of Tools te gaan, en dan naar Verwijzingen. Weet zo gauw de Engelse term niet, maar je hebt niet heel veel opties, dus daar kom je denk ik wel uit. Controleer daar welke bibliotheken zijn geladen, door bijvoorbeeld een Printscreen te maken en die te posten.
Tweede handeling die je kunt doen: controleer de uitkomst van de berekening, door hem eerst aan een variabele toe te kennen, te beginnen bij Schijf1.
Onder de Private Sub zet je dan eerst:

Dim tmp as Double

En de formule wordt dan:

tmp=Val(Schijf1.Value)+... etc.

en daarna:

Msgbox tmp

Als je daarna een getal wijzigt, moet er een messagebox verschijnen met het juiste getal. Is dat niet het geval, dan is dat ook een indicatie waar de fout zou kunnen zitten.

Succes!

Hier ook vast een voorbeeldje, dat bij mij in Access 2003 in ieder geval prima werkt!

Michel
 

Bijlagen

Laatst bewerkt:
nu krijg ik de foutmelding "ongeldig gebruik van Null"

help? :s

mvg

Nico
 
ok, denk da ik het gevonden heb... die foutmelding krijg ik dus doordat alle velden (1 tem 5) nog leeg zijn. als hier overal een waarde instaat (vb 0) dan lukt het wel...

nu nog eens ff uitzoeken hoe dat kan...

mvg

Nico
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan