Je bent nu offline; er wordt gewacht tot er weer een internetverbinding is

Access 2000: Dagelijkse uren berekenen op basis van in- en uitkloktijden

Dit artikel heeft betrekking op een Microsoft Access-database (.mdb) en een Microsoft Access-project (.adp).

Gemiddeld: vereist basisvaardigheden op het gebied van macro's, codering en interoperabiliteit.

Samenvatting
In dit artikel wordt beschreven hoe dagelijks gewerkte uren worden berekend, onafhankelijk van het aantal keren dat een werknemer in- of uitklokt.
Meer informatie
Voer de volgende stappen uit om een voorbeelddatabase te maken waarin het totale aantal uren wordt berekend dat een werknemer op een bepaalde dag heeft gewerkt:
  1. Maak een nieuwe database en voeg daar de volgende tabellen aan toe:
       Tabel: Employees   ----------------------------   Veldnaam: EmpID   Type: AutoNummering   Veldgrootte: Long Integer   Index: Ja (geen dubbele)   Veldnaam: EmpName   Type: Tekst   Veldgrootte: 50   Index: Nee   Tabeleigenschappen: Employees   -------------------------------   PrimaryKey: EmpID   Tabel: EmpDates   ----------------------------   Veldnaam: DateID   Type: AutoNummering   Veldgrootte: Long Integer   Index: Ja (geen dubbele)   Veldnaam: MyDate   Type: Datum/tijd   Notatie: Korte datumnotatie   Index: Nee   Veldnaam: EmpID   Gegevenstype: Number   Veldgrootte: Long Integer   Index: Nee   Tabeleigenschappen: EmpDates   -------------------------------   PrimaryKey: DateID   Tabel: EmpTimes   ----------------------------   Veldnaam: TimeID   Type: AutoNummering   Veldgrootte: Long Integer   Index: Ja (geen dubbele)   Veldnaam: TimeIn   Type: Datum/tijd   Notatie: Middellange tijdnotatie   Invoermasker: 09:00\ >LL;0;_   Index: Nee   Veldnaam: TimeOut   Datumtype: Datum/tijd   Notatie: Middellange tijdnotatie   Invoermasker: 09:00\ >LL;0;_   Index: Nee   Veldnaam: DateID   Datumtype: Number   Veldgrootte: Long Integer   Index: Nee   Tabeleigenschappen: EmpTimes   -------------------------------   PrimaryKey: TimeID					
  2. Maak de volgende twee relaties

    1. Employees naar EmpDates (Een-op-veel) op EmpIDEmpDates naar EmpTimes (Een-op-veel) op DateID
    2. EmpDates naar EmpTimes (Een-op-veel) op DateID

    en schakel de volgende opties in voor deze relaties:
    • Referentiële integriteit afdwingen
    • Gerelateerde velden trapsgewijs bijwerken
    • Gerelateerde records trapsgewijs verwijderen

  3. Maak een nieuwe query, voeg de volgende SQL-instructie toe als bron voor de query en sla de query op als qryTimes:
    SELECT TimeID, TimeIn, TimeOut, DateID, DateDiff("n",[TimeIn],[TimeOut]) AS CalcTime FROM EmpTimes;
  4. Maak drie nieuwe formulieren op basis van de volgende gegevens:
       Formulier: frmEmployees   -----------------------   Bijschrift (Caption): Werknemers   Recordbron (RecordSource): Employees      Tekstvak      --------------------      Naam: txtEmpID      Besturingselementbron (ControlSource): EmpID      Ingeschakeld: Nee      Tekstvak      ----------------------      Naam: txtEmpName      Besturingselementbron (ControlSource): EmpName   Formulier: frmDates   ----------------------   Bijschrift (Caption): Datums   Recordbron (RecordSource): EmpDates      Tekstvak      ---------------------      Naam: txtMyDate      Besturingselementbron (ControlSource): MyDate      Tekstvak      ---------------------      Naam: txtDateID      Besturingselementbron (ControlSource): DateID      Zichtbaar: Nee      Tekstvak      -------------------      Naam: txtTotalHours      OPMERKING: in de volgende voorbeeldexpressie wordt een onderstrepingsteken (_)      aan het einde van de regel gebruikt als regelvoortzettingsteken.      Verwijder het onderstrepingsteken aan het einde van de regel wanneer u      deze expressie opnieuw maakt.       ControlSource: =[Forms]![frmEmployees]![Dates Subform]._                     [Form]![Times Subform].[Form]![txtTotTime]   Formulier: frmTimes   -----------------------   Bijschrift (Caption): Tijden   Recordbron (RecordSource): qryTimes   Standaardweergave: Gegevensblad      Tekstvak      ---------------------      Naam: txtTimeIn      Besturingselementbron (ControlSource): TimeIn      Tekstvak      ----------------------      Naam: txtTimeOut      Besturingselementbron (ControlSource): TimeOut      Tekstvak      -----------------------------------------------------------------      Naam: txtCalcTime      ControlSource: =Int([CalcTime]/60) & ":" & Int([CalcTime] Mod 60)      Tekstvak      ------------------------------------------------------------------      Naam: txtTotTime      ControlSource: =Int(Sum([CalcTime])/60) & ":" & Int(Sum([CalcTime]) Mod 60)					
  5. Open het formulier frmDates in de ontwerpweergave en sleep het formulier frmTimes vanuit het databasevenster naar de sectie Details van het formulier frmDates.
  6. Stel de eigenschap Naam van het subformulierobject in op Subformulier Times, sla het formulier op en sluit het.
  7. Open het formulier frmEmployees in de ontwerpweergave en sleep het formulier frmDates vanuit het databasevenster naar de sectie Details van het formulier frmEmployees.
  8. Stel de eigenschap Naam van het subformulierobject in op Subformulier Dates.

Het voorbeeld testen:

  1. Dubbelklik op het formulier frmEmployees.
  2. Typ Jan Gebruiker in het vak EmpName.
  3. Voer 2-1-2001 in het vak MyDate in.
  4. Voer 09:00 in het vak TimeIn in.
  5. Voer 12:00 in het vak TimeOut in.
  6. Druk op TAB totdat de focus is ingesteld op een nieuwe rij in het vak TimeIn en voer 01:00 in.
  7. Voer 18:00 in het vak TimeOut in.
  8. Klik in het menu Records op Record opslaan. U ziet dat de totale tijd per rij wordt weergegeven in het subformulier Times en dat de som van deze rijen wordt weergegeven in het subformulier Dates.
inf
Eigenschappen

Artikel-id: 237958 - Laatst bijgewerkt: 01/22/2007 15:44:46 - Revisie: 2.0

  • Microsoft Access 2000 Standard Edition
  • kbhowto KB237958
Feedback