Avatar billede jacob_boel Nybegynder
15. maj 2008 - 08:31 Der er 12 kommentarer

Tidsberegning med med automatisk fratræk af pauser

Hejsa

Er ved at lave noget dataopsamling fra en produktion. Databasen køre sådan set, men vil gerne at den selv kan trække pauserne fra. Er det ikke miligt at lave det?

F.eks.
Starttid = kl 7:00
Sluttid = kl 11:00
Pause = kl 9 - 9:15

Kan man lave så den delv trækker det fra? Jeg har fået en til at lave en beregning så den finde ud af at der er 4:00 timers arbejde.

Går ud fra at det skal være i en forespørgsel det skal laves.

Jeg bruger Access 2007, men er ikke vildt god til det, så lidt hjælp ville være rart.
Avatar billede mugs Novice
15. maj 2008 - 08:44 #1
SELECT Tabel1.start, Tabel1.slut, DateDiff("n",[start],[slut]) AS Udtryk1, Tabel1.pausestart, Tabel1.pauseslut, DateDiff("n",[pausestart],[pauseslut]) AS Udtryk2, ([udtryk1]-[udtryk2]) AS Udtryk3
FROM Tabel1;

Kan sende dig et eksempel i Access 2003
Avatar billede jacob_boel Nybegynder
15. maj 2008 - 08:52 #2
Det må du meget gerne. send den til joe@boelliving.dk
Avatar billede mugs Novice
15. maj 2008 - 09:00 #3
Sendt
Avatar billede jacob_boel Nybegynder
15. maj 2008 - 09:53 #4
Har du sendt det? Har ikke modtaget noget endnu.
Avatar billede Slettet bruger
15. maj 2008 - 10:29 #5
Du skal bruge antal min for pausen eller en pause start og pause slut..

Så laver du en forespørgsel, hvor et af felterne kunne være noget i den her retning:

Timer: format(([sluttid]-[starttid])-nz([pauseslut]-[pausestart];0);"short time")
Avatar billede mugs Novice
15. maj 2008 - 10:37 #6
Sendt 09:00 - Prøver igen.
Avatar billede jacob_boel Nybegynder
15. maj 2008 - 12:29 #7
mugs: Jeg har ikke modtaget noget endnu. kan du evt sende det til jacob@oernstrup.dk i stedet for? på forhånd tak.
Avatar billede mugs Novice
15. maj 2008 - 12:41 #8
Sendt til ny adresse.
Avatar billede jacob_boel Nybegynder
15. maj 2008 - 12:45 #9
tak. har fået den... skal bare lige have fundet winrar og installeret det :)
Avatar billede mugs Novice
15. maj 2008 - 12:55 #10
Avatar billede jacob_boel Nybegynder
16. maj 2008 - 07:46 #11
mugs: Tak for db'erne. Det var bare ikke helt det jeg mente, med med automatisk.

Vi har to pauser på en dag. en kl 9-9.15 og en kl 12-12.20. Det jeg søgte er hvis de pauser indgår i arbejdstiden, f.eks hvis et arbejde er fra kl 7.00 til 13.15. Så er der jo 35 min pause i. Så var planen at den selv skulle trække de 35 min fra, hvis de indgik i arbejdstiden. Pauserne er altid faste og skal kun trækkes fra hvis de ingår i arbejdstiden.
Håber det er noget i eksperter kan hjælpe med.
Avatar billede kjulius Novice
24. juni 2008 - 01:31 #12
Jeg faldt tilfældigt over denne lidt ældre "opgave", og da den ikke ser ud til endnu at være løst til din tilfredsstillelse, vil jeg give mit bidrag.

Min "forsøgsopstilling" består af to tabeller:

Arbejdsopgaver:
Id    Dato        Betegnelse    Start        Slut
1    11-06-2008    xxxx-1        07:00:00    10:20:00
2    11-06-2008    xxxx-2        10:21:00    12:30:00
3    11-06-2008    xxxx-3        12:31:00    14:30:00
4    12-06-2008    yyy        08:00:00    12:05:00

Pauser:
Id    Pause        Start        Slut
1    Formiddagspause    09:00:00    09:15:00
2    Middagspause    12:00:00    12:20:00


På grundlag af disse to tabeller (som måske, måske ikke stemmer overens med dine egne tabeller) har jeg lavet en forespørgsel, som viser det antal effektive arbejdsminutter, hver enkelt arbejdsopgave involverer:


SELECT a.Id, a.Dato, a.Betegnelse, a.Start, a.Slut, DateDiff("n",a.Start,a.Slut) AS Arbejdsminutter, SUM(Nz(DateDiff("n",IIf(p.Start<a.Start,a.start,p.start),IIf(p.slut>a.Slut,a.slut,p.slut)),0)) AS Pauseminutter, Arbejdsminutter-Pauseminutter AS [Effektive arbejdsminutter]
FROM Arbejdsopgaver AS a LEFT JOIN Pauser AS p ON (a.start between p.start and p.slut) or (a.slut between p.start and p.slut) or (a.start<=p.start and a.slut >=p.start)
GROUP BY a.Id, a.Dato, a.Betegnelse, a.Start, a.Slut, DateDiff("n",a.Start,a.Slut);


Med de data jeg har indsat i de to tabeller, giver det følgende output:

Id    Dato        Betegnelse    Start        Slut        Arbejdsminutter    Pauseminutter    Effektive arbejdsminutter
1    11-06-2008    xxxx-1        07:00:00    10:20:00    200        15        185
2    11-06-2008    xxxx-2        10:21:00    12:30:00    129        20        109
3    11-06-2008    xxxx-3        12:31:00    14:30:00    119        0        119
4    12-06-2008    yyy        08:00:00    12:05:00    245        20        225


Jeg håber det var det resultat du ønskede at komme frem til.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester