13. februar 2008 - 09:52Der er
15 kommentarer og 1 løsning
Overløb
Hej,
Jeg sidder og roder med en database hvor jeg laver en beregning. Jeg har en samlet udbetaling ([SAMLETUDB]) og en afgift ([AFGIFT]). Det skal lige siges at der er MANGE poster (omkring 100.000 tror jeg)
Jeg laver så en forespørgsel hvor jeg i en ny kolonne laver følgende beregning: AFGIFTPROCENT : Rund ([AFGIFT] / ([SAMLETUDB]/[AFGIFT]) * 100) - Dette virker også fint nok og jeg får den afrundede procent ud som jeg skal.
Nu skal jeg så begrænse disse så jeg kun får dem der er over 40% i afgift på. Så jeg sætter >40 i kriterier ved [AFGIFTPROCENT] kolonnen. Men her kommer så fejlen "Du har lavet et overløb".
Jeg læste at overløb/overflow er noget med datatyper, så jeg har gået min database database igennem. Og har konstateret at [AFGIFT] og [SAMLETUDB] begge er defineret som et LANGT HELTAL. (De beløb der står i begge kan komme op på højst 20-30 millioner, så jeg skulle mene at LANGT HELTAL var nok).
Hvorfor får jeg overløbsfejlen? Hvis jeg IKKE begrænser til >40 i procent kommer fejlen ikke. Men så snart jeg gør, popper fejlen op, idét jeg kører forespørgslen.
Hvis i har brug for flere detaljer. Skriv endeligt.
F.eks. kan et talfelt af typen Byte rumme heltal mellem 0 og 255 hvis du her indtaster 256 vil du få et overløb, så prøv aligevel at ændre feltstørrelsen.
Mugs: Jeg har faktisk også prøvet at ændre datatyperne til et DOBBELT REELT tal for at være helt sikker - Altså når jeg ændrer datatypen i databasen, så gælder det for alle værdier i databasen ikke sandt?
Men selvom jeg ændrede datatypen hjalp det lige lidt.
Terry: Want me to write it out as text or were you thinking a screenshot? I can't write it the data it self if thats where you were headed since the database itself is really big.
jensen363: Ja det har jeg. Og jeg har prøvet en smut løsning hvor eftersom jeg kunne se mine procenter, men ikke begrænse dem har jeg lavet en ny kolonne med en IIf sætning der skriver et 1'tal hvis den er over 40% og så har jeg prøvet at begrænse DEN kolonne i både samme forespørgsel, samt en ny. Men lige lidt hjælpe det.
I was thinking of the database with REAL data, a screenshot isnt going to giv eme the data which is giving you problems. If you make a dB with only the tables/query which is giving you problems then compact/repair it and then ZIP how big is it?
Or if you can reduce the amount of data (records) but still have a problem then just send that.
terry: I just tried making it smaller, with very few data (about 70), and it worked out fine. But I didn't think that the amount of data could create an overflow problem since the overflow is the data being the wrong types.
The problem is that the data is personal work data. So I don't think I have permission to share them, but i'll see what I can do. I'll return when I've found a solution.
Efter nogle afgrænsnings forsøg fandt jeg endeligt frem til problemet. Hvis [SAMLETUDB] var 0 og [AFGIFT] var 0, gav det jo en divisionsfejl. Og da den åbenbart beregner #FEJL! som en anden datatype - kom der en typefejl imellem Tal og #Fejl!, og dermed et overløb. Irriterende at den gør sådan, men skønt at det blev løst.
OK - Man kan du ikke fejlfinde dig ud af problemet f.eks med funktionen Nz som netop tager højde for dette problem.
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.