Avatar billede dover Nybegynder
21. januar 2003 - 11:01 Der er 8 kommentarer og
1 løsning

Tidsberegning

Hejsa

Har fået mig en lille opgave her på arbejdet

her er den forsimplet:

jeg har en tabel med Sagsnr, timeForbrug, minutForbrug

det bruges til at registrere sagsbehandlernes forbrug af timer og minutter på den enkelte sag.

sagen er den at chefen gerne vil have dette tidsforbrug ganget med 1,5 når fakturaen udskrives.

dvs. jeg skal bruge en forespørgsel der indeholder de ovenstående kolonner, men ligeledes fakturaTimer og FakturaMinutter, hvor den forbrugte tid er ½ gang større.

ydermere skal der afrundes til nærmeste fem minutter, så der ikke kommer til at stå 1 time og 27,4354 minutter....

ligeledes nytter det ikke at der står 1,5 timer og 40 minutter......

det er access 2000 og win 98 klienter i et front end - backend setup.

Har selv bikset frem og tilbage med det, men kan godt se at den grundliggende SQL jeg har haft på studiet ikke helt slår til ;)

-Dover
Avatar billede Slettet bruger
21. januar 2003 - 11:03 #1
"sagen er den at chefen gerne vil have dette tidsforbrug ganget med 1,5 når fakturaen udskrives."

- Hehe - Ja det vil han vel :)
Avatar billede dover Nybegynder
21. januar 2003 - 11:06 #2
kan godt se det virker obskurt, men det er desværre praksis i denne branche, normalt er det sagsbehandleren selv der gør det, men vi vil gerne indføre korrekte tidsregistreringer af statistik hensyn. uden at det går udover indtjeningen. Kunden får som det er nu ikke de rigtige registreringer, men det vil de fremover få, således så de kan se hvad det reelt har haft af tidsforbrug.
Avatar billede skyttegaard Nybegynder
21. januar 2003 - 11:08 #3
Du skal nok først lave en mellemregning med et kombineret felt, der viser samlet antal minutter - Det vil sige timer*60+minutter
Det ganger du så med 1.5
Det nye tal dividerer du med 60 og tager integer værdi - det er så justerede timer
Og så tager du den oprindelige mellemregning med minutter - og trækker justerede timer*60 fra - så har du minutter, som du så kan afrunde til nærmeste 5 minutter (divider med 12 - round - gang med 12)
Avatar billede dover Nybegynder
21. januar 2003 - 11:45 #4
kigger på det, kan godt være jeg skal bruge lidt mere hjælp..... jeg er ikke den vilde access haj, har kun teorien, og meget lidt praktisk erfaring.... typisk akademiker ;)
Avatar billede dover Nybegynder
21. januar 2003 - 12:28 #5
Jeg tror jeg er ved at have den, der er bare to ting jeg ikke helt er klar på.

1) hvordan tager jeg integer værdien? jeg ved godt hvad en int er, og kan godt se pointen, men hvordan gør jeg det lige i praksis i acces.

2) afrundingen:"så har du minutter, som du så kan afrunde til nærmeste 5 minutter (divider med 12 - round - gang med 12)" kan jeg ikke helt greje hvis jeg fx har 52,5min så dividerer jeg med 12=4,375, afrunder=4 og ganger med 12=48. jeg tror ikke helt jeg forstår regnestykket

3) kan jeg ikke risikere at være uheldig ved en afrunding og ende med over 60 min?

-Dover
Avatar billede skyttegaard Nybegynder
21. januar 2003 - 12:58 #6
Her er den lavet med ny query til hvert step - det er måske ikke den mest elegante, men det gør det nemt at følge:

Query1 - Sum af minutter: Expr1: [Table1]![Timer]*60+[Table1]![Minutter]
Query2 - Gang med 1.5: Expr2: [Query1]![Expr1]*1.5
Query3 - Find timer: Expr3: Int([Query2]![Expr2]/60)
Query4 - Find minutter: Expr4: [Query3]![Expr2]-60*[Query3]![Expr3]

Herefter afrundes minutter - se videre:

2 - Afrunding: Jo - det var en skrivfejl fra min side. Du skal dividere med 5 - afrunde - og derefter gang emd 5 - Ikke med 12

3 - Du kan ikke komme over 60 minutter - Int vil altid runde ned, og det vil sige, at din værdi ved division med 5, vil blive mellem 0 og 11.9999999 - den rundes ned til et heltal mellem 0 og 11, som ganges med 5 tiv værdien (0, 5, 10, ..., 55).
Hvis du vil have afrunding både op og ned, kan du løse det ved at lægge 2.5 minutter til den værdi, du finder i query 2 ovenfor - hvis du så har haft mindst 57.5 minutter i mellemregningen, vil det give en time mere, men minuttallet vil blive nul i den sidste.

Spørg, hvis du er i tvivl om noget

- Peter -
Avatar billede dover Nybegynder
21. januar 2003 - 13:14 #7
Det er fandme smukt!

Takker mange gange! det virker som en sveske!

-dover
Avatar billede skyttegaard Nybegynder
21. januar 2003 - 13:18 #8
Det var så lidt...
- Peter -
Avatar billede fangel Nybegynder
22. januar 2003 - 22:15 #9
dumt spm, findes der ikke en "%" operator... kan ikke huske hvad den "hedder", men i PHP og C(++), laver den divisions stykket og finder resten...

altså

samlet_antal_min%60 = [overskydende min] // minutter
samlet_antal_min-[overskyndende min] // timer...

ved ikke om den findes i Acces, men den gør somsagt i C(++) og i PHP...

Morten
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