Avatar billede jps6kb Novice
02. oktober 2005 - 20:57 Der er 11 kommentarer og
2 løsninger

Lægge værdier sammen, tal

Hej,

Jeg har et problem.

Jeg skal have lagt int i o variabler sammen, og have divideret noget.
Hvordan gør jeg det?

Ex1.

var1 + var2..

Ex2.

var2 / var3
Avatar billede killerclown Nybegynder
02. oktober 2005 - 20:58 #1
Er det fordi det er alfanummeriske variabler, eller hvad ?
Avatar billede jps6kb Novice
02. oktober 2005 - 20:58 #2
Altså

x = var1 + var2

y = var2 / var3


Får en overflow..

Noget med at 30 + 14 giver 3014 i stedet for 44.. har jeg læst mig frem til..
Avatar billede jps6kb Novice
02. oktober 2005 - 20:59 #3
Nej, ren tal..
Avatar billede jps6kb Novice
02. oktober 2005 - 21:00 #4
Hov.. skulle have været oprettet i ASP :)
Avatar billede killerclown Nybegynder
02. oktober 2005 - 21:02 #5
OK !
Det er fordi værdierne bliver SET som alfanummeriske.
Eks :
a = "2"
b = "3"
a+b ville så give 23

Du skal konvertere dem til int på denne måde :

a = "2"
b = "3"
a = cint(a)
b = cint(b)
a+b vil så give 5

/Killer
Avatar billede jps6kb Novice
02. oktober 2005 - 21:10 #6
Jeg får stadig denne fejl:

Microsoft VBScript runtime  error '800a0006'

Overflow

/konkur.asp, line 56


Kan du se fejlen?
Data ligger givetvis i tekst felter i min Access DB, men det skulle vel ikke gøre noget?


-------------------------------------------
-------------------------------------------

<%
    imageid = "0"
    snit = cdbl(0)
   
    set imgrs = Server.CreateObject ("ADODB.Recordset")
    set imgrs = Myconn.execute("SELECT id From [galleri]")
   
    while NOT imgrs.EOF
   
        set voters = Server.CreateObject ("ADODB.Recordset")
        set voters = Myconn.execute("SELECT * From [stemmer] where objid = '" & imgrs("id") & "'")
       
        votecount = cdbl(0)
        voteresult = cdbl(0)
       
        while NOT voters.EOF
       
            voteresult + cdbl(voters("stemme"))
            votecount + cdbl(1)
           
        voters.MoveNext
        Wend
       
        tmpSnit = cdbl(voteresult) / cdbl(votecount)
       
        if tmpSnit > snit Then
       
            snit = cdbl(tmpSnit)
            imageid = imgrs("id")
       
        End if
       
    imgrs.MoveNext
    Wend
   
    response.write "Snit: " & snit & "ImgId: " & imageid
%>

-------------------------------------------
-------------------------------------------
Avatar billede jps6kb Novice
02. oktober 2005 - 21:11 #7
L56 : tmpSnit = cdbl(voteresult) / cdbl(votecount)
Avatar billede killerclown Nybegynder
02. oktober 2005 - 21:16 #8
Det er lidt svært, at se uden hele source-koden og accessdatabasen :o)
Men hvorfor "doubl'er" du voteresult og votecount ?
Jeg tror, at din fejl ligger der et sted. Du bruger funktionen en del, og også steder, hvor den ikke er nødvendig :)
Avatar billede jps6kb Novice
02. oktober 2005 - 21:20 #9
vote result er fordi det kan give en double hvis jeg dividerer ex. 20 med 7 og så tænkte jeg, ens datatyper over det hele må være løsningen.
Det er hele koden der..

Databasens felter som er brugt her, er alle tekst, ud over id i Image. Den er autonummering.

Hvordan skulle jeg ellers lave det? :)
Avatar billede ksoren Nybegynder
02. oktober 2005 - 21:25 #10
voteresult = voteresult + cdbl(voters("stemme"))
votecount = votecount + 1

du lægger til, men glemmer at tildele variablen resultatet

Prøv at kigge på SQL funktionerne SUM og AVG
Avatar billede ksoren Nybegynder
02. oktober 2005 - 21:27 #11
SELECT AVG(stemmer) as gennemsnit From [stemmer] where objid = 'id'

vil give dig gennemsnittet
Avatar billede jps6kb Novice
02. oktober 2005 - 21:27 #12
ksoren -> ARGH JA!! K*ft, godt tænkt af mig der.. *G*

Takker for det..

Smider du ikke også lige et svar ;)
Avatar billede ksoren Nybegynder
02. oktober 2005 - 22:56 #13
ok. Er det en Access database?

Så kunne denne måske være et forsøg værd:

select top 1 objid, avg(stemme) as gennemsnit from stemmer where objid in (select id from galleri) group by objid order by avg(stemme) desc
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
Kurser inden for grundlæggende programmering

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