tijdstippen van elkaar aftrekken

Status
Niet open voor verdere reacties.

neesse

Gebruiker
Lid geworden
10 feb 2010
Berichten
6
Hoi allemaal,

Ik heb een simpele vraag maar kom er zelf niet uit.
Sinds kort ben ik begonnen met access 2003.
Ik heb een datebase gemaakt met werktijden van het personeel.
Ik heb een begintijd
een eindtijd
en pauzetijd

Nu wil ik de totaaltijd berekenen en deze direct zichtbaar maken in het invoerformulier werktijden.

Dus: eindtijd - begintijd - pauze

Heeft iemand een idee hoe ik dit voor elkaar krijg.

Alvast bedankt voor de moeite :)
 
Een tijd is, net als een datum, een getal. Je kunt getallen in een query van elkaar aftrekken... Wel zul je daarna waarschijnlijk de Opmaak van het getal op Korte tijdnotatie moeten zetten.
Als je de waarde wilt laten uitrekenen op het formulier nadat de brongetallen zijn ingevoerd, dan moet je voor elk veld een <Na bijwerken> procedure maken.

Code:
Sub Pauze_AfterUpdate()
     Me.Totaaltijd=Me.Eindtijd-Me.Pauze-Me.Starttijd
End Sub

Bijvoorbeeld... En die berekening zet je bij alle tijdvelden, zodat het niet uitmaakt welk veld je invult/verandert. De berekening wordt dan altijd uitgevoerd.
 
Bedankt voor de snelle reactie.

Ik snap er alleen niet veel van.
Ik ben pas net begonnen met Access en heb nog geen verstand van programeren in Access. Zou je het wat duidelijker kunnen maken voor me?
 
Mijn voorbeeldje is bedoeld voor een formulier, waarop je de gegevens invult. Uit je verhaal begrijp ik, dat je een invoerformulier hebt gemaakt, waar de berekening op moet plaatsvinden.

In bijgaand plaatje vind je een voorbeeld van de techniek die ik bedoel.
Op het tekstvak Kosten staat deze Gebeurtenisactie:

Code:
Private Sub txtKosten1_AfterUpdate()
If Me.Dirty Then
    iCheck = MsgBox("De gegevens zijn gewijzigd, wil je ze opslaan?", vbYesNoCancel + vbDefaultButton2, "Gegevens opslaan")
    If iCheck = 6 Then
        Me.TotaalExclBTW.value = Nz(Me.txtKosten1, 0) + Nz(Me.txtKosten2, 0) + Nz(Me.txtKosten3, 0)
        Me.BTW21 = Round(Me.TotaalExclBTW * (Me.BTW21.Tag / 100), 2)
        Me.TotaalBedrag = Me.TotaalExclBTW + Me.BTW21
        Me.Dirty = False
    End If
End If
End Sub

Omdat je gegevens normaal gesproken opslaat in een tabel, zit er ook een check in die vraagt of je de veranderde waarde wilt opslaan, maar daar gaat deze vraag niet over. Je moet dus kijken naar de regels die beginnen met Me.
In deze regels wordt een berekening uitgevoerd, die vervolgens wordt toegewezen aan de juiste tekstvakken.
 

Bijlagen

  • Berekening 1.jpg
    Berekening 1.jpg
    12,5 KB · Weergaven: 50
  • Berekening 2.jpg
    Berekening 2.jpg
    36,5 KB · Weergaven: 56
Bedankt voor je reactie.

Volgens mij heb ik gedaan wat je zei in je antwoord maar hij werkt nog steeds niet.
Ik heb als bijlage het access bestand bijgevoegd.
Misschien dat je daar wat mee kunt.

Groetjes Neesse
 

Bijlagen

Tis niet helemaal perfect, maar het werkt tenminste...
 

Bijlagen

Helemaal goed,

Bedankt voor de moeite.
Alleen nu zit ik met de vraag: Hoe heb je dit voorelkaar gekregen???
 
Je had een 'functie' gemaakt die niet bestaat. Vandaar dat het niet werkte. Als je kijkt naar de eigenschap <Na Bijwerken> dan zie je dat elk tekstvak zijn eigen formule heeft gekregen. Om het formulier ook te laten werken bij bladeren, staat de formule ook nog een keer bij de gebeurtenis <Bij Aanwijzen>. Deze gebeurtenis wordt afgevuurd als je naar een ander record gaat.
 
Oke,

Maar hoe heb je deze functies bij ieder tekstvak gekregen want ik als ik kijk bij de eigenschappen <na bijwerken> dan zie ik de formules wel en als ik kijk bij <Bij aanwijzen> dan zie ik ze niet.
En als ik dan een formule heb gemaakt moet ik deze dan overal ik kopieeren of doet Access dat automatisch??
 
De formule staat, behalve bij de tekstvakken, ook op d Formuliereigenschap <Bij Aanwijzen>. In VBA zie je daarom staan: Private Sub Form_Current(). Om de eigenschappen van het formulier überhaupt te kunnen zien, moet je (bijvoorbeeld) naast het formulierontwerp in het donkergrijze deel klikken, of er onder, of op het vierkante blokje waar de horizontale en verticale lineaal bij elkaar komen.
 
Ik heb het nog steeds niet helemaal onder de knie.
Maar ik ben door je hulp al wel een heel stuk verder.
Ik ga proberen een query te schrijven en deze te laten uitvoeren als er veranderingen zijn ingevoerd.

Alvast bedankt voor de moeite.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan