21. september 2000 - 18:38Der 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.
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
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.
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.
Synes godt om
Ny brugerNybegynder
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.