Avatar billede cornell Nybegynder
21. september 2000 - 18:38 Der er 5 kommentarer og
1 løsning

Beregnings fejl i Access 2000

// Spørgsmål. Da Access jo desværre beregner forkert, hvad angår total sum af timer mellem flere dage, eller felter, måtte jeg lave et skript i visual, som så gik ind og dimensionerede tid korrekt, hvilket også er fint nok, fordi man via en tabel kan beregne de indtastede værdier osv. MEN, i min form, som er indeholder oplysninger osv om personale samt gå og møde tider, kan jeg ikke se hvordan jeg skal integrere dette script ( modul ) for at lave udregningen baseret på værdierne i min tabel som formen er lavet på. Problemet ligger i at man under ControlSource, ikke kan bruge en almindelig expression så som =[xxx]+[xxx]+[xxx], og så få summen af de tal i tabellen, da den er \"BOUNDED\". Heller ikke hvis man laver mellem regninger i selve formen virker det, da der her kommer en værdi frem som er hæmmet af Access\'s fejl ved beregning af værdier som overstiger 24 timer.

Hvordan integrerer jeg mit script i formen, i den textbox ( hvori koden skal være ) for at beregne på baggrund af de andre felter i formen?

Form visuelt er lavet sådan her

Mandag Møde tid = 8:30
Mandag Gå tis = 16:30
Mandag sum = 8:00
osv.

Det er fra Mandag sum og Tirsdag sum osv jeg skal have beregnet den totale værdi ved hjælp af mit script samt ved at gøre det i en textbox hvor jeg under control source definer min kode.

HJÆLP!
Avatar billede privaten Nybegynder
22. september 2000 - 07:54 #1
Prøv at smide koden herud, du er også velkommen til at sende din db (privaten@forum.dk)
Avatar billede cornell Nybegynder
22. september 2000 - 08:03 #2
Hej,

Tak for hurtig respons,

Jeg tror vi kan klare os uden koden.

Jeg skal bare have integreret en \"succesfuld beregning\" ind i min form.

Beregnings grundlaget er :

5 uge dage,
hvor man tager de timer man har været der den pågældende dag, og sætter i en tabel \'

Dvs mandag = 8 timer
Tirsdag = 6 timer
Onsdag = 11 timer osv.

Den tabel skal indeholde de ovenstående oplysninger, hvor man derefter bruger GetTimeCardTotal koden, til at beregne den samlede tid for hele ugen.
Koden er her, ( Tabel2 indeholder de værdierne arbejds tid for hverdagene. altså 5 felter nedad, med de timer man har været på arbejde den pågældende dag ).
[Daily Hours] er så det felt den beregner fra, og resten af koden er dimensioneringen af tid som rettes her og udregnes korrekt, da Access ikke kan dette normalt.


Option Explicit
Function GetTimeCardTotal()

Dim db As DAO.Database, rs As DAO.Recordset
Dim totalhours As Long, totalminutes As Long, totalseconds As Long
Dim days As Long, hours As Long, Minutes As Long, seconds As Long
Dim interval As Variant, j As Integer

Set db = DBEngine.Workspaces(0).Databases(0)
Set rs = db.OpenRecordset(\"tabel2\")
interval = #12:00:00 AM#
While Not rs.EOF
interval = interval + rs![Daily Hours]
rs.MoveNext
Wend
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
hours = totalhours Mod 24
Minutes = totalminutes Mod 60

GetTimeCardTotal = totalhours & \" : \" & Minutes & \" minutes \"

End Function
Avatar billede cornell Nybegynder
22. september 2000 - 18:25 #3
Problemet er løst..
Glad mand ånder lettet op.

STORT tak til Privaten,
et geni uden lige.
Avatar billede moses Praktikant
25. september 2000 - 11:53 #4
Jeg ville meget gerne lige vide, hvad det er for en REGNEFEJL i snakker om.
Den opdager man jo ikke.
Avatar billede cornell Nybegynder
25. september 2000 - 12:09 #5
/ MOSES

Prøv at lave en tabel, med ugedagene,
Skriv det antal timer du har været der hver dag
f.eks, mandag = 8 timer,
tirsdag = 6 timer osv.
prøv så at lave en form baseret på tabellen, og lav et felt i formen du lægger timerne sammen.
Dvs, form, felt = tabellens timer. så regner den ikke rigtig.
Avatar billede moses Praktikant
25. september 2000 - 13:36 #6
Sorry, men jeg kan ikke få den til at fejle.
Nu har jeg prøvet med små step, hvor jeg har lagt forskellige timer ind for hver ugedag, så summen gav værdierne 1 time, 15:06:59 timer, 23:59:59 timer, 24:00:01 timer, hvilket så skal give 00:00:01, hvilket det også gør.
Desuden har jeg prøvet med 2*24 timer og 2 sekunder.
Det giver 00:00:02, hvilket er fuldstændig korrekt.

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