[ACCESS] Waardes optellen in formulier

Pagina: 1
Acties:
  • 644 views sinds 30-01-2008
  • Reageer

  • r0_
  • Registratie: Augustus 2006
  • Laatst online: 12-07 23:36
hallo,

Ik probeer in een Access formulier 2 waardes van 2 velden bij elkaar op te tellen. Dit wil ik doen dmv VB.
Het gaat erom dat wanneer ik de waarde in 1 veld verander, dat die betreffende bij waarde nummer 2 wordt opgeteld. Dit moet automatisch gebeuren wanneer ik de waarde in veld 1 verander. Dit is mogelijk door de 'AfterUpdate' functie. Nu heb ik in de help functie van Access gezocht naar het optellen van 2 waardes. Echter, ik snap deze uitleg niet helemaal. Zou iemand mij kunnen uitleggen wat er wordt bedoeld met dit:

VOORBEELD:
U kunt bijvoorbeeld de gemiddelde korting berekenen voor alle orders in de tabel Orderdetails. Eerst worden de velden Unit Price en Discount met elkaar vermenigvuldigd om de korting voor de afzonderlijke orders vast te stellen en vervolgens wordt het gemiddelde berekend. U zou dit voorbeeld kunnen opnemen in een procedure in een module:

Dim dblX As Double
dblX = DAvg("[UnitPrice] * [Discount]", "[Order Details]")

Ik snap alles wat er tussen de haakjes staat wel, alleen wat er wordt bedoelt met "Dim dblX As Double" snap ik niet. Ik weet dat double een datatype is maar wat de rest moet voorstellen....
En het gaat hier in het voorbeeld dus om het gemiddelde uitrekenen, ik moet optellen. Wat moet ik dan gebruiken ipv 'DAvg'?

Ik hoop dat iemand mij hier mee kan helpen. Mocht mijn vraag onduidelijk zijn, laat het weten zodat ik het wellicht nog duidelijker kan uitleggen

BvD!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?

PRG >> OFF

Ten eerste heb je het hier over Access en die gebruikt VBA en geen VB.Net; da's toch écht een verschil :P

Dus daarbij een titlechange:
[VB.Net] Waardes optellen >> [ACCESS] Waardes optellen in formulier.

Voor optellen gebruik je gewoon de + operator

[ Voor 57% gewijzigd door RobIII op 29-03-2007 18:50 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Er wordt een variabele van het type Double gedeclareerd met als naam dblX.
dblX krijgt de waarde gemiddelde(veld1,..., veldn).

Wat je kunt doen is: dblX = veld1 + veld2 enz enz.
Maar hou er wel rekening dat de velden ook daadwerkelijk bruikbare data moeten bevatten.
edit:

Zucht... :+

[ Voor 5% gewijzigd door Verwijderd op 29-03-2007 17:55 ]


  • r0_
  • Registratie: Augustus 2006
  • Laatst online: 12-07 23:36
Mijn excuses voor de verkeerde naamgeving!

Ik heb even verder lopen knutselen maar ik ben bang dat het net wat ingewikkelder ligt dan ik deed vermoeden.
Om iets duidelijker te zijn, het gaat om de volgende expressie:

Einddatum = Begindatum + Looptijd

Hier zijn Begindatum en Einddatum van het type 'date'. Staan dan ook in de database als dd-mm-jjjj. Hier moet de waarde van looptijd bij opgeteld worden. Dit is echter alleen maar een getal (numeric). Nu weet ik dat die 2 samen optellen niet zomaar gaat. Daarom heb ik in VBA het volgende gedaan om dat toch voor elkaar te krijgen:

Private Sub looptijd1_AfterUpdate()
Dim einddatum As Date
Me.einddatum = Day(Me.einddatum) + Me.looptijd.Value
End Sub

Helaas werkt het niet zo. De Einddatum verandert wel, alleen naar een compleet verkeerde datum.
Hebben jullie nog een hint waar ik naar moet kijken?

Thx :)

P.S. Ik wil niet de indruk wekken dat ik verwacht dat jullie het antwoord zomaar voorkauwen. Ik zit er alleen al de hele dag al mee te stoeien en het wil maar niet lukken. Ik hoop dat jullie nog een handje willen helpen!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk eens naar de DateAdd functie

[ Voor 58% gewijzigd door RobIII op 29-03-2007 18:39 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:18

gorgi_19

Kruimeltjes zijn weer op :9

Je hebt toch een DateAdd functie in VBA?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Dateadd, of simpeler, beseffen dat datums numerieke waarden uitgedrukt in dagen. Dus als jij bij een datum/tijd 15 minuten op wilt tellen doe je [datum]+ 15/1440
RobIII schreef op donderdag 29 maart 2007 @ 17:53:
DAvg is een Average van een Double; hence DAvg ;)
offtopic:
DAvg is het gemiddelde over een bepaald _domein_

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Lustucru schreef op donderdag 29 maart 2007 @ 18:47:
offtopic:
DAvg is het gemiddelde over een bepaald _domein_
:$
Ik ben denk ik in de war geweest met CInt, CLng, CDbl etc :P

Whoops :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • r0_
  • Registratie: Augustus 2006
  • Laatst online: 12-07 23:36
Het is gelukt mensen!

Dit deed het hem uiteindelijk:

code:
1
2
3
4
5
6
7
8
Private Sub looptijd1_AfterUpdate()
    Dim iLooptijd As Integer
    Dim txtBegin As Date
    
    iLooptijd = CInt(looptijd.Value)
    txtBegin = datum.Value
    einddatum = DateAdd("d", iLooptijd, txtBegin)
End Sub


Jullie allen bedankt voor de hints en tips! :D

Greetz, r0
Pagina: 1