Avatar billede xenoxsis Nybegynder
13. februar 2008 - 09:52 Der 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.
Avatar billede mugs Novice
13. februar 2008 - 10:04 #1
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.
Avatar billede terry Ekspert
13. februar 2008 - 10:04 #2
Is it possible to see the dB or part of it which is giving the problem?

ekspertenATsanthell.dk
AT = @
Avatar billede terry Ekspert
13. februar 2008 - 10:05 #3
Sorry, if mugs can help here then OK
Avatar billede terry Ekspert
13. februar 2008 - 10:06 #4
If the query gives a result without the criteria then I would assume that the data types should be OK.
Avatar billede xenoxsis Nybegynder
13. februar 2008 - 10:12 #5
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: Which part did you want to see and how?
Avatar billede terry Ekspert
13. februar 2008 - 10:23 #6
The query which you are having problems with and the tables which it uses.
Avatar billede jensen363 Forsker
13. februar 2008 - 10:29 #7
Har du forsøgt at lave en ny forespørgsel, som bygger på data fra den 1. forespørgsel og så først begrænse dig i den nye forespørgsel ?
Avatar billede xenoxsis Nybegynder
13. februar 2008 - 10:37 #8
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.
Avatar billede terry Ekspert
13. februar 2008 - 10:40 #9
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.
Avatar billede xenoxsis Nybegynder
13. februar 2008 - 10:53 #10
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.
Avatar billede terry Ekspert
13. februar 2008 - 11:02 #11
before I can help I will need the data which gives the problem
Avatar billede xenoxsis Nybegynder
13. februar 2008 - 11:09 #12
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.
Avatar billede jensen363 Forsker
13. februar 2008 - 11:58 #13
Umiddelbart er det ikke antallet af rækker som volder problemet ... problemet må ligge i data ( har lige testet med 1.6 mio rækker )
Avatar billede mugs Novice
13. februar 2008 - 12:53 #14
Access størrelse er ikke afhængig af antal rækker (poster), men af den samlede størrelse af db på ca. 2 Gb.

Husk, at hvis der slettes poster, bliver den plads de slettede poster ikke frigjort før db komprimeres.
Avatar billede xenoxsis Nybegynder
13. februar 2008 - 15:50 #15
Så fandt jeg fejlen!

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.

Tak for jeres indsats med fejlfinding.
Avatar billede mugs Novice
13. februar 2008 - 16:05 #16
OK - Man kan du ikke fejlfinde dig ud af problemet f.eks med funktionen Nz som netop tager højde for dette problem.
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