Verschil nemen tussen 2 kolommen met datum en uur

Status
Niet open voor verdere reacties.

HuysmansS

Gebruiker
Lid geworden
16 aug 2010
Berichten
21
Hoi

Ik heb een acces bestand dat constant wordt upgedate via PLC invoer. Het bestand ziet er als volgt uit:

Deur_ID
521
Deur_Open
18/08/2010 10:42:32
Deur_Toe
18/08/2010 10:49:32
Deur_Wat
1

Deze staan natuurlijk naast elkaar. Deur_Wat geeft aan om welke deur het gaat.

Nu zou ik graag het uurverschil willen berekenen tussen Deur_Toe en Deur_Open per dag en per deur en ook het totaal aantal uren dat de deur per dag open staat.

Kan iemand me hiermee helpen?

Alvast bedankt!
 
Als Deur_Toe en Deur_Open datum/tijdvelden zijn, kun je ze simpel van elkaar aftrekken in een query. Zet dan in een query de velden die je wilt zien, en maak dit veld. Tijd_Open:[Deur_Toe] - [Deur_Open].
Misschien dat je de Veldopmaak in de query nog naar <Korte Tijdnotatie> o.i.d. moet zetten, want er zal wel een getal uitrollen, geen tijd.
 
Ik heb in het queryontwerp de velden van de tabel overgenomen en een nieuw veld aangemaakt nm. Tijd_open.
Echter als ik gewoon Deur_Toe en Deur_Open van elkaar wil aftrekken lukt dit niet.

Als ik op uitvoer klik, moet ik eerst een parameterwaarde opgeven, maar ik krijg niks in mijn gegevensbladweergave.

Ik denk dus dat Deur_toe en deur_open geen datum/tijdsvelden zijn.
 
Kun je dat eerst controleren in het Tabelontwerp?
 
De parameterwaarde heb ik al gevonden. Dit kwam omdat ik een veld gebruikte dat niet bestond.
 
Nu het aftrekken van de 2 kolommen is me nog niet gelukt. Ik kan bij het nieuwe veld bij eigenschappen geen datum notatie kiezen. Hierdoor krijg ik volgens mij getallen waar ik niets mee ben.

Iemand een idee?
 
Ik heb bij de getalnotatie hh:mm:ss ingetypt en nu krijg ik wel het verschil tussen de 2 tijden.
 
Zoals ik al zei, je krijgt een getal uit de berekening :)
In de query moet je het veld met de berekening selecteren, dan rechtsklikken, <Eigenschappen> of de knop <Eigenschappen> gebruiken. Vervolgens in de regel <Notatie> Korte tijdnotatie typen, of "hh:mm", dan verschijnt er ook Korte tijdnotatie.
 
Inderdaad :) Bedankt!!

Weet jij soms ook hoe ik een rapport kan maken gesorteerd op datum en deur, en dan daarachter hoeveel uur die dag de desbetreffende poort open stond en hoeveel keer deze open en toe ging
 
Dan zul je denk ik eerst een query moeten maken die de verschillende tijden uitrekent. Vervolgens gebruik je de knop Totalen om de totaaltijden en aantallen uit te rekenen, waarbij je groepeert op Datum en Deur. Je maakt dan een veld waarbij je de GroupBy vervangt door Aantal, zodat je het aantal krijgt, en het berekende veld met de tijden zet je op Som, zodat je in de query 4 velden krijgt:
Datum (Group By)
Deur (Group By)
Aantal (Aantal)
Totaaltijde (Som)
Wil je meer velden, dan kan dat uiteraard, maar je loopt dan de kans dat er per datum/deur combinatie meer records komen. 't Is nog maar de vraag of je dat wilt...
Als je de query hebt, gebruik je die als basis voor een rapport, waarbij je groepkopteksten maakt voor Datum en Deur, bijvoorbeeld. Of alleen datum, als je wilt groeperen op Datum, of alleen Deur als je wilt groeperen op Deur.
De velden zet je dan in de Detailsectie, waarbij je de labels los zult moeten knippen zodat je ze in een koptekst kunt plaatsen.
Beetje prutsen dus ;)
 
Hoi,

Het begint meer en meer te lukken, maar die tijden krijg ik niet opgeteld. Na wat opzoekwerk weet ik dat dit komt omdat de functie som enkel geldt voor numeriek en valuta.

Hoe krijg ik dan die tijden opgeteld?

Bedankt
 
Een tijd is numeriek.... En kun je dus gewoon optellen. Als dat niet lukt, is er iets verkeerd met je veldinstelling van je tabel. Kijk dus eerst in de tabel of je tijdveld wel van het type Datum/Tijd is.
 
In de querie waar ik het verschil in tijd heb berekend tussen Deur_Toe en Deur_Open is de notatie hh:nn:ss .

Nu in een andere querie wil ik dan die tijden optellen gesorteerd per datum en per deur dus geef ik in

Som([Totaal_Deur]) ook met notatie hh:nn:ss

Dat is dan in principe juist?
 
De opmaak van een veld doet niet terzake; het gaat om de Veldinstelling in de tabel. Daar kies je voor Tekstveld, Numeriek veld of Datum/Tijd veld. Als de velden Deur_Toe en Deur_Open niet op Datum/Tijd staan, kun je er niet mee rekenen. Dus daar ligt de basis (en hopelijk ook de oplossing) van het probleem.
Als je wel de Totaaltijd kunt berekenen, staan de veldinstellingen overigens goed, want een berekening is uiteraard een berekening. Tenzij (daar gaat-ie weer) je de opmaak op deze manier hebt geregeld:
Code:
Totaaltijd:Format([Deur_Toe] - [Deur_Open];"hh:nn:ss")
Want daarmee maak je van Totaaltijd weer.... Tekst! En tekstvelden kun je weer niet optellen.... Je moet dus geen opmaak in de berekening gebruiken, maar de Veldinstelling van het veld Totaaltijd instellen op Korte Tijdnotatie. Daarmee blijft het veld een getalveld, en kun je dus weer doorrekenen.
 
De tijd tussen deur_open en deur_toe heb ik gewoon berekend als volgt:

Totaal_Tijd: [Deur_toe]-[Deur_open]

Dus deze instelling staat dan juist?
 
De formule zou moeten kloppen. Als je de standaardnotatie gebruikt, zou je dan een uitkomst moeten hebben als: 0,345678354 Deze waarde kun je met de notatie hh:mm:ss omzetten naar een tijdnotatie. Wat ook vaak gedaan wordt, is het getal met 24 vermenigvuldigen, zodat je het verschil in uren hebt.
Nu wat betreft de Totaalsom. Die berekening kun je dus ook doen met het veld [Totaal_Deur]. Als je die berekening in een query maakt, moet je de knop <Totalen> aanzetten. Hiermee krijg je een extra regel in je query-ontwerp, waarmee je functies en groeperingen kunt maken. Standaard staan alle velden op <Group By>, wat inhoudt dat je op elk veld wilt groeperen. Je wilt waarschijnlijk groeperen op [Datum] en op [Deur], dus die velden laat je op <Group By> staan. Het veld [Totaal_Deur] geef je de functie <Som>, en dan ben je er al. Als je de query met deze drie velden uitvoert, heb je de totaaltijden per dag per deur.
Hoe meer velden je toevoegt (met de optie <Group By>) hoe meer differentiatie je krijgt, dus hoe meer records. Elke nieuwe groep zal voor extra regels zorgen, omdat er meer combinaties zullen zijn.
Hoe je e.e.a. in je rapport gebruikt, kan ik zo niet beoordelen. Om in een groep Totalen te berekenen hoef je de query namelijk niet aan te passen. Als je via de knop <Groepen en Sorteren> een voettekst aanmaakt voor het veld Datum door te groeperen op [Datum], kun je in de voettekst de functie <Som> gebruiken als besturingselement voor een tekstveld. Idem dito voor het veld [Deur]. Om een totaal per deur te maken, heb je een voettekst nodig op het veld Deur.
In een rapport is het niet mogelijk om een tekstveld te maken met een functie zoals Som. Je krijgt dan een foutmelding. Functies gebruik je in tekstvelden die in een kop- of voettekst staan, zoals dus een Rapportvoettekst of een Veldvoettekst. Ze werken ook niet in een Paginavoettekst, omdat in Access een pagina geen groep gegevens vertegenwoordigt, wat een veld of rapport wel doet. Bij een pagina-voettekst wordt het aantal weer te geven records bijvoorbeeld beïnvloed door de hoogte van de detailsectie.
Hopelijk kun je hier weer wat verder mee...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan