Avatar billede it-dyret Nybegynder
05. februar 2002 - 13:38 Der er 19 kommentarer og
2 løsninger

For mange decimaler!!!

Jeg har en db, hvor der foretages en del registreringer af forskellig art og nogle formularer, hvor der bl.a. er nogle lister, som viser diverse nøgletal fra disse registreringer.

Listerne har 1-2 kolonner, hvor rowsource er forespørgsler. Det virker alt sammen fint, hvis det ikke lige var fordi, der er ofte er alt for mange decimaler. Alle registreringer er på 2 decimaler, men der kan sagtens blive vist 10 decimaler - dette er naturligvis forkert, da der kun skulle kunne blive vist max. 2 decimaler!

Et nøgletal som f.eks. skulle være 0 (nul), hvis man regner manuelt efter, bliver vist som -1,48713588146E-05. Med andre ord et meget lille tal!

Hvorfra og hvorfor kommer der så mange decimaler - og hvordan slipper jeg af med dem?
Avatar billede terry Ekspert
05. februar 2002 - 13:49 #1
you can set this in table design view for a numericla fields. Itis defaulted to Auto.
Avatar billede proaccess Nybegynder
05. februar 2002 - 13:49 #2
Du kan sætte dine beregninger ind i Format()-funktionen..

Hvis din Rowsource fx. er: SELECT ID, Sum(etellerandet) FROM... Så kan du bruge SELECT ID, Format(Sum(etellerandet),"#.##0,00") FROM ... for at få tusindestalsseperator og 2 desimaler.
Avatar billede terry Ekspert
05. februar 2002 - 13:50 #3
In a report youcan also set the fromat field to standard which should show two decimals
Avatar billede it-dyret Nybegynder
05. februar 2002 - 14:33 #4
>>>terry
Ved lister (list) er der ikke en sådan valgmulighed. Det du snakker om, må være den indstilling som f.eks. findes ved tekstfelter (textfield).

>>>proaccess
Det hjalp, da jeg brugte din funktion og byttede om på komma og punktum (ellers fik jeg 5 decimaler)!

En sidste detalje ville dog være at få diverse tal stillet under hinanden efter kommaet (eller alternativt højrestillet). Selv om jeg piller ved "tekstjustering" og sætter den til højre, står det stadigvæk venstrestillet. I lister med kun 1 kolonne er der kun tal, mens der er tekst i første kolonne og tal i anden i lister med 2 kolonner. Problemet er det samme i begge typer lister.

Kan det evt. lade sig gøre at få højrestillet tallene og venstrestillet teksten?
Avatar billede terry Ekspert
05. februar 2002 - 14:42 #5
I am referig to the TABLE design, not a report, I assume its a report you mean when you say "lister"?

You should be able to set the fields "Text Alige" property (in the report) to Right. If it still doesnt aligncorrectly then I susspect that your data is getting formatted as text, with trailing spaces.
Avatar billede proaccess Nybegynder
05. februar 2002 - 14:42 #6
Det er et evigt tilbagevendende problem, det nemmeste jeg kan foreslå dig er at bruge en ikke-propertional skrifttype og derefter bruge foranstillede 0'er... som dog absolut ikke er nogen go' løsning... ;-(
Avatar billede proaccess Nybegynder
05. februar 2002 - 14:47 #7
>Terry: jeg mener der er tale om lister på formularer... As In: Form(0).List(0).RowSource
Avatar billede it-dyret Nybegynder
05. februar 2002 - 14:49 #8
>>>terry
De pågældende lister befinder sig på formularer, da de bruges til at afspejle ændringer i forbindelse med indtastning af diverse registreringer.

>>>proaccess
Kan det heller ikke lade sig gøre, hvis der kun er en kolonne?? Hvis det kan, kunne jeg jo bryde listerne med 2 kolonner op i 2 lister...
Avatar billede terry Ekspert
05. februar 2002 - 14:51 #9
OK! I am sure that IF the tables Format and deciamls properties are set then these values are also set in list and reports etc.
Avatar billede proaccess Nybegynder
05. februar 2002 - 14:59 #10
>Terry: You can set the Format of attributes in the tabledesign, right... BUT this is results of a calculating query... so the decimals are off... a number of 3 decimals times a number of 3 decimals, could return a result of 9 decimals...
Avatar billede proaccess Nybegynder
05. februar 2002 - 15:01 #11
SORRY: 3 decimals times 3 decimals results in 6 decimals...

As in 0,001*0,001=0,000001
Avatar billede it-dyret Nybegynder
05. februar 2002 - 15:08 #12
Lige for at kunne runde spørgsmålet af:
Kan det ikke lade sig gøre at få højrestillet tal i en liste - selvom listen kun består af 1 kolonne, som udelukkende indeholder tal??

Hvordan kan det være, at en forespørgsel, som lægger 2-decimalede tal sammen, kan blive til f.eks. 10 decimaler?? (Der er nu styr på at skjule de resterende decimaler, men hvorfor dukker du overhovedet op???)
Avatar billede terry Ekspert
05. februar 2002 - 15:10 #13
The decimal places in the table properties only effects what is displayed NOT what is stored, so the query would still calculate correctly. But then you would still need to use the format or something if the result is giving too many decimals anyway!
Avatar billede it-dyret Nybegynder
05. februar 2002 - 15:10 #14
du = de
Avatar billede proaccess Nybegynder
05. februar 2002 - 15:15 #15
Hvis du ikke skal bruge flere end 4 decimaler, så kan du med fordel bruge CURRENCY (valuta)... Den regner med skalerede heltal, i stedet for flydende kommatal (som er roden til alt ondt i dette tilfælde)

MHT: højrestilling, så er det ikke min stærke side, det er vist IKKE helt nemt at få til at spille...
Avatar billede fdata Forsker
05. februar 2002 - 18:26 #16
>>> Hvorfor dukker de (decimalerne) op? Vi har tidligere vendt sagen med Microsoft, som svarer at regnefejlen er "as per design". Access er (ifølge Microsoft) ikke konstrueret til at kunne regne. De ævler om, at det er *svært* at foretage nøjagtige beregninger osv. osv.
Tilbage sidder vi så med et program, hvor alle beregninger skal afrundes via hjemmestrikkede funktioner - selv helt enkle beregninger, f.eks:

Sub AccessRegneFejl()
  Dim a As Single
  Dim b As Single
  a = 16.22
  b = 16.11
  MsgBox (a - b)
End Sub

Emnet har været vendt adskillige gange her på Eksperten.
Du er ikke alene med dine frustrationer.
Avatar billede it-dyret Nybegynder
05. februar 2002 - 19:21 #17
Jeg stiller mig tilfreds med svarene. De har givet mig indsigt i et problem, som åbenbart ikke er ligetil at løse, men samtidig givet mig mulighed for at komme videre...

>>>fdata
Sender du lige et svar, da jeg synes, at du skal ha' en lille bid af kagen?
Avatar billede proaccess Nybegynder
05. februar 2002 - 20:46 #18
>fdata: du vil få præcis samme fejl i fx. excel... selv ved dit simple eksempel.

Dette skyldes at vi (mennesker) snakker efter 10-tals systemet, hvorimod at maskiner snakker binært 0/1... Der sker så af og til fejl, i konverteringen mellem disse systemer, som eksemplet illustrerer.
Avatar billede fdata Forsker
06. februar 2002 - 22:25 #19
Hvad sker der? Eksperten åd mit svar. VI prøver igen:

>>>it-dyret. Tak.

>>>proaccess. Korrekt. Man kunne bare ønske sig, at afvigelsen ikke blev vist, hvis den lå ude på 8. eller 9. ciffer - som i Excel ;o)
Avatar billede it-dyret Nybegynder
07. februar 2002 - 09:15 #20
Pointene er fordelt efter svarenes brugbarhed.

Jeg takker!
Avatar billede proaccess Nybegynder
07. februar 2002 - 09:16 #21
det gør jeg også...  ;-)
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