Avatar billede hmortensen Nybegynder
20. juli 2003 - 18:46 Der er 9 kommentarer og
1 løsning

Udefineret variabel

Jeg har her et stykke kode som laver en ændring i en mdb, og det virker.

Nu skal den også oprette en række i en mysql db, men jeg får følgende fejl:

Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'SQLdatabase'

(Jeg aner faktisk intet om asp, skal jeg nok lige sige)
<%
    dim connection,id,SQLstringK

    Set Connection = Server.CreateObject("ADODB.Connection")
    Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("../hundelort.mdb")
   
    id    =        Trim(Request.QueryString("id"))
           
    SQLstringK="UPDATE bruger SET godkendt=true WHERE id=" & id
    Connection.Execute(SQLstringK)

    SQLserveradr=""
    SQLdatabase=""
    SQLlogin=""
    SQLpassword=""

    Set Conn = Server.CreateObject("ADODB.Connection")

    conStr = "driver={MySql};server="& SQLserveradr &";database="& SQLdatabase
    conStr = conStr & ";uid="& SQLlogin &";pwd="& SQLpassword & ";OPTION=16386"

    Conn.Open conStr

    strSQL = "INSERT INTO tabel values('" & Request.QueryString("nick") & "' , '' , 'b' , 'ce', '' )"
    Conn.Execute(strSQL)

    response.buffer=true
    response.clear
    response.redirect "side.asp"
    response.end
%>
Avatar billede hossein Nybegynder
20. juli 2003 - 18:50 #1
Du mangler felt (kolonne) navne f ex:
INSERT INTO Persons (navn, Addesse)
VALUES ('Rasmussen', 'Storgt 67')
Avatar billede hmortensen Nybegynder
20. juli 2003 - 18:53 #2
Nej, sql skal du ikke lære mig noget om. Man kan sagtens gøre sådan der.

Fejlen er en udefineret variabel siger den, Den ville også ha sagt sql error near et eller andet hvis det var i sql'en
Avatar billede hossein Nybegynder
20. juli 2003 - 19:07 #3
Ok, den ikke finde din db som du har kaldt: "SQLdatabase"
Conn.Open "Driver={mySQL};" & _
          "Server=MyServerName;" & _
          "Option=16834;" & _
          "Database=navnetPåminDatabase"
Avatar billede hmortensen Nybegynder
20. juli 2003 - 19:20 #4
Hjælper intet...
Avatar billede squashguy Nybegynder
20. juli 2003 - 19:23 #5
Du kører med option explicit, dvs. du skal erklære dine variabler før brug. Det gør du med.

Dim SQLserveradr, SQLdatabase ... etc
Avatar billede hmortensen Nybegynder
20. juli 2003 - 19:24 #6
Ahhh ok
Aner som sagt nada om asp
Avatar billede eagleeye Praktikant
20. juli 2003 - 19:24 #7
Den siger variable undefindes.

Du skal huske at Dim'e alle variable så som du har gjort med connection,id,SQLstringK hvis du har Option Explicit på i toppen af koden.
dim connection,id,SQLstringK

dim SQLserveradr,SQLdatabase,SQLlogin,SQLpassword
Avatar billede hmortensen Nybegynder
20. juli 2003 - 19:30 #8
Hvad gør den der: option explicit ?
Er der fordele med at ha den på ?
Smider i 2 lige et svar
Avatar billede eagleeye Praktikant
20. juli 2003 - 19:36 #9
Hvis man ikke har den kan man bare skrive et variable navn efter behov..
id = 23
navn = "heje"

uden at havde defineret dem, det kan man ikke med option explicit
der skal de defineres med Dim:

option explicit
dim id,navn
id=23
navn = "heje"

fordelen er at man let kan fande små stave fejl i variablenavne i koden. Hvis man skriver
navn = "hej"
Response.write nanv

virker koden men den skriver ikke noget ud og man kan tit bruge en del tid på at finde de små fejl, det er naturligvis lettere at skrive uden Option Explicit da man ikke behøves at huske Dim først. Sammenligner man med andre programmerings sprog kan man ikke undgå at definere sine variable først.
Avatar billede hmortensen Nybegynder
20. juli 2003 - 19:37 #10
Tak for den gode forklaring

Jeg er vant til php :D
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