Avatar billede larsny Nybegynder
18. december 2005 - 00:40 Der er 19 kommentarer og
1 løsning

MySQL Program type out of range??

Jeg har en kolonne i mysql der hedder temp og er af typen DECIMAL(10,1)

Når jeg prøver at hente talne ud fra denne kolonne får jeg fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Driver Manager] Program type out of range


koden ser således ud:
sql = "select temp from vejrstatistik"
set rs = Conn.Execute(sql)

temp = rs("temp")

rs.close

Nogen der ved hvad der går galt?
Avatar billede tjp Mester
18. december 2005 - 02:15 #1
Burde du ikke sige:

Set temp = rs("temp")
Avatar billede Slettet bruger
18. december 2005 - 06:25 #2
Som tjp antyder så kommer bliver typer som decimal repræsenteret i ASP VBScript som objekter og derfor skal du bruge set hvis du vil flytte dem til en variable, men ved det at du sikker skal gøre noget ASP-agtigt kan du med fordel lave det sådan her:

temp = cdbl(rs("temp"))
Avatar billede larsny Nybegynder
18. december 2005 - 11:46 #3
når jeg bruger:
temp = cdbl(rs("temp"))

får jeg fejlen:
error '80020009'

??

Det er fordi jeg samtidig skal hente flere ting ud af databasen altså:
sql = "select temp, regn, sol from vejrstatistik"
Avatar billede Slettet bruger
18. december 2005 - 11:56 #4
Hvilken versioner af ODBC driverne kører du ?
Avatar billede larsny Nybegynder
18. december 2005 - 12:04 #5
MySQL ODBC 3.51 Driver
Avatar billede Slettet bruger
18. december 2005 - 12:13 #6
prøv lige denne her

sql = "select cast(temp as double), regn, sol from vejrstatistik"
Avatar billede larsny Nybegynder
18. december 2005 - 12:15 #7
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'double), regn, sol from vejrstatistik' at line 1
Avatar billede Slettet bruger
18. december 2005 - 12:23 #8
Sorry, den kan slet ikke casts to double , mysql *sigh*

kan du ikke lige prøve
sql = "select temp from vejrstatistik"
set rs = Conn.Execute(sql)

set temp = rs("temp")
response.write TypeName(temp )

rs.close

Så lad os se hvad for en type den faktisk returnerer og så tage det derfra.
Avatar billede larsny Nybegynder
18. december 2005 - 12:24 #9
den retunerer:
Field
Avatar billede Slettet bruger
18. december 2005 - 12:27 #10
sql = "select temp from vejrstatistik"
set rs = Conn.Execute(sql)

set temp = rs("temp")
response.write temp.Type

rs.close
Avatar billede larsny Nybegynder
18. december 2005 - 12:28 #11
retunerer:
0
Avatar billede Slettet bruger
18. december 2005 - 12:31 #12
Burde betyde

adEmpty=0, No value

sql = "select temp from vejrstatistik"
set rs = Conn.Execute(sql)

set temp = rs("temp")
response.write TypeName(temp.Value)
response.write temp.Value


rs.close
Avatar billede larsny Nybegynder
18. december 2005 - 12:34 #13
der skriver ingen ting nu
Avatar billede Slettet bruger
18. december 2005 - 12:35 #14
Bare lige et dumt spørgsmål det der sql

select temp from vejrstatistik

Det returnerer noget ikke ?
Avatar billede larsny Nybegynder
18. december 2005 - 12:38 #15
jo for hvis jeg ændre det hele til kolonnen regn, så skriver den Double og 51 ved det sidste du skrev.
og når jeg bruger mysql query browser, så står der i kolonnen temp "0.1" (samme række self :) )
Avatar billede Slettet bruger
18. december 2005 - 12:42 #16
Kan du på nogen måder ændre kolonne typen til Double ?
Avatar billede larsny Nybegynder
18. december 2005 - 12:45 #17
ja det er gjort nu...

nu virker det sq :)

hvad er forskellen på de to typer?
Avatar billede Slettet bruger
18. december 2005 - 12:48 #18
Forskellen er at Decimal ikke er en tilnærmelse ligesom float og decimal. Problemet er bare at der øjensynligt er en fejl i myODBC, som gør den ikke kan bruges.

http://bugs.mysql.com/bug.php?id=10103
Avatar billede larsny Nybegynder
18. december 2005 - 12:50 #19
hehe okay...

tak for hjælpen :)

smid et svar
Avatar billede Slettet bruger
18. december 2005 - 12:51 #20
svar
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