Avatar billede yuksel Nybegynder
07. september 2005 - 10:11 Der er 14 kommentarer og
1 løsning

Nem Beregningsproblem i vba ?

hej til alle .

jeg har en beregnings problem i access håber at i vil hjælpe.

Jeg har nogle variabler som indholder nogle tal og som giver en resultat.
formlen ser sådan ud.

A = (B * C ) / (D*E)



når jeg debugger og og holder mussen over variabler kan jeg se disse værdier :

b =  26,7441961115443
c = 1.29103e+006
d = 400
E = 694722



resultat = (26,7441961115443  * 129464000000)  / (400 * 694722)


jeg mener at problemmet kommer af c som indholder 1.29103e+006 ?

er der nogen der gider hjælpe :(
Avatar billede yuksel Nybegynder
07. september 2005 - 10:11 #1
resultatet bliver forkert med flere nuller som ikke skal være med
Avatar billede yuksel Nybegynder
07. september 2005 - 10:16 #2
når jeg skriver manuelt
c = 1.29103e+006 så skriver access den om til
c = 1291030#  og hvad # betyder i access ved jeg ikke.

men hvis jeg skriver tingene op som sådan som jeg har skrevet til jeg så lander jeg på den rigtige resultat .

men i praksist når programmet kørere så bliver tingene hentet og derefter hvis jeg så holder mussen over c så kan jeg se : 129464000000 og det jeg henter er 1.29103e+006
men hvis jeg manuelt til delere 1.29103e+006 til c så visser den  1291030#
Avatar billede yuksel Nybegynder
07. september 2005 - 10:17 #3
min variabel c er erklæret som double !
det her bliver smidt i 1.29103e+006 i c og den visser så  129464000000
Avatar billede yuksel Nybegynder
07. september 2005 - 10:45 #4
er der nogen ?
Avatar billede mugs Novice
07. september 2005 - 10:48 #5
Foruden dette spørgsmål har du 1000 point ude + disse 200 = 1200.

Det er for mange, til at jeg vil bruge min tid .
Avatar billede yuksel Nybegynder
07. september 2005 - 11:03 #6
så er det rettet  :), håber det hjælper
Avatar billede mugs Novice
07. september 2005 - 11:24 #7
Jeg mener at fejlen ligger i c der er c = 1.29103e

Noget tyder på, at den værdi du prøver at lægge i c ikke kan være der. Hvis C f.eks er en integer og du prøver at lægge f.eks en double i c, så burde du få fejlen "Overflow". Men prøv alligevel at se på c måske på formatet, eller gør feltet bredere i formularen.
Avatar billede yuksel Nybegynder
07. september 2005 - 11:53 #8
værdien bliver hentet fra XML og noden ser sådan ud
<T1>1.29464e+006</T1>
c er erklæret som :
Dim C as Double
og i debug når jeg holder mussen over c så kan jeg se 129464000000
Avatar billede yuksel Nybegynder
07. september 2005 - 11:55 #9
og jeg brugerere ikke nogle felt i min formular til c .
det hele sker i koden
Avatar billede yuksel Nybegynder
07. september 2005 - 11:58 #10
ved import af xml så bruger jeg IXMLDOMNodeList
Avatar billede yuksel Nybegynder
07. september 2005 - 12:01 #11
hmmmm. har lige opdaget noget som måske belyse tingene.
i tildfælde af c as double  får c værdien  129464000000
og tildfælde af at jeg bare skriver dim c . (uden noget) så får c værdien 1.29464e+006
Avatar billede mugs Novice
07. september 2005 - 13:39 #12
Nu ved jeg ikke hvad XML er. Du skal se i denne fil og det også ser således ud der.

Når du bruger Dim c bliver c en Variant der kan indeholde alle tegn og størrelser.
Avatar billede fynbohans Nybegynder
07. september 2005 - 15:59 #13
"resultatet bliver forkert med flere nuller som ikke skal være med" skriver du i dit spørgsmål.
Variabeltypen "Double" har en nøjagtighed på 16 decimaler. Dvs. mellemregningerne har også denne nøjatighed. Resten af decimalerne forsvinder!
Jo flere gange du ganger og dividerer jo mere unøjagtigt bliver resultatet derfor.
Avatar billede yuksel Nybegynder
08. september 2005 - 09:29 #14
Har fundet fejlen og rettet den.
værdien for mit xml  = <T1>1.29464e+006</T1>
min ACCESS er på Dansk, derfor opfatter den ikke det punktum der ligger i tallet.
og det er også derfor mit tal bliver en million gange støre.
dette er løst med et procedure som omdanner . til , .
Avatar billede yuksel Nybegynder
25. oktober 2005 - 10:14 #15
lukketid
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