Avatar billede webcreator Nybegynder
28. marts 2003 - 20:32 Der er 13 kommentarer og
2 løsninger

Variabel i strSQL

Hej.

Flg. kode er problemet :
strSQL = "Select * from brugere where navn = var1"

Dette giver flg. fejl :
Error Type:
Microsoft JET Database Engine (0x80040E10)
No value given for one or more required parameters.
/infoc/login.asp, line 14

Jeg ved, at der er noget i variablen - men måske jeg indsætter det forkert i strSQL'en ?
Avatar billede stig3 Mester
28. marts 2003 - 20:34 #1
strSQL = "Select * from brugere where navn = '" & var1 & "'"
Avatar billede webcreator Nybegynder
28. marts 2003 - 20:50 #2
Hm, tak. Men gider du svare mig på en ting mere ?

Koden :

<%

var1=request.form("navn")
var2=request.form("psw2")

dbname=Server.MapPath("db.mdb")

set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open

strSQL = "Select * from brugere where navn = '" & var1 & "'"

Set rs = Cn.Execute(strSQL)

var3 = rs("psw1")

' Luk databaseforbindelse
Cn.Close
Set Cn = Nothing

If var2 = var3 Then
response.redirect("edit.asp")
End if

response.redirect("logon.asp?sta=<h1>Forkert brugernavn eller kode!</h1>")

%>


Som du kan se, så har jeg en linie der hedder :
var3 = rs("psw1")

Kan jeg ikke det ? For jeg får fejlen :
Error Type:
ADODB.Field (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/infoc/login.asp, line 17
Avatar billede stig3 Mester
28. marts 2003 - 21:34 #3
Det må være fordi din query ikke giver noget resultat.


Prøv:
<%

var1=request.form("navn")
var2=request.form("psw2")

dbname=Server.MapPath("db.mdb")

set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open

strSQL = "Select * from brugere where navn = '" & var1 & "'"
response.write strSQL

- og så udkommenter resten midlertidigt.

Dermed kan du se din sql....
Avatar billede webcreator Nybegynder
28. marts 2003 - 22:06 #4
Jeg får stadig denne fejl :
Error Type:
ADODB.Field (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/infoc/login.asp, line 17
Avatar billede stampehansen Nybegynder
28. marts 2003 - 22:19 #5
du skal _altid_ tage højde for at din forespørgsel måske ikke retunerer nogle records. Altså i det tilfælde for der ikke er nogle poster oprettet i "brugere" med det pågældende navn. Dermed får du et "tomt" recordset object retuneret, eller med andre ord et recordset som står én plads efter den sidste record, og som hedder EOF.

Derfor bør du efter kommandoen
Set rs = Cn.Execute(strSQL)
Avatar billede stampehansen Nybegynder
28. marts 2003 - 22:22 #6
Whoops.. trykkede på en forkert knap. Ovenstående burde IKKE være et svar idet "sitg3" allerede har svaret på dit oprindelige spørgsmål (som man kan se på dine fejlbeskeder)

Men efter
Set rs = Cn.Execute(strSQL)

skal du lige tjekke om der nu også var nogle records hvilket du lige gør med:

if NOT rs.EOF then 'der er records
    'gør hvad du vil med dit recordset her
else
    response.write "ingen poster fundet"
end if



Dermed får du nu en pæn besked i stedte for grimme ADO fejlbeskeder.
Avatar billede webcreator Nybegynder
28. marts 2003 - 22:24 #7
Hvad bør jeg gøre efter den kommando ?
Avatar billede webcreator Nybegynder
28. marts 2003 - 22:25 #8
Ok, tak. prøver lige
Avatar billede webcreator Nybegynder
28. marts 2003 - 22:31 #9
Min fejlkode er nu :

Error Type:
ADODB.Field (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/infoc/login.asp, line 17


Min kode :

<%

var1=request.form("navn")
var2=request.form("psw2")

dbname=Server.MapPath("db.mdb")

set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open

strSQL = "Select * from brugere where navn = '" & var1 & "'"
response.write strSQL

Set rs = Cn.Execute(strSQL)

if NOT rs.EOF then 'der er records

if var2=rs("psw1") then
response.redirect("logon.asp?sta=<h1>Forkert brugernavn eller kode!</h1>")
end if

else

response.redirect("logon.asp?sta=<h1>Forkert brugernavn eller kode!</h1>")

end if

' Luk databaseforbindelse
Cn.Close
Set Cn = Nothing

%>
Avatar billede webcreator Nybegynder
29. marts 2003 - 14:13 #10
Nogen bud paa en loesning ?
Avatar billede cool_casper Nybegynder
29. marts 2003 - 15:22 #11
Hvad står der i linie 17 i din kode??
Avatar billede webcreator Nybegynder
29. marts 2003 - 15:27 #12
Min kode staar lige oven over :)
Avatar billede stig3 Mester
29. marts 2003 - 15:29 #13
Ja - men hvilken een er linie 17 ?

.. og udskriver den ikke din SQL streng ?
Avatar billede webcreator Nybegynder
29. marts 2003 - 15:56 #14
Hrmf !

Tydeligvis mig der var problemet. Havde brugte forkerte navne i min tabel. Beklager ulejligheden :)
Avatar billede cool_casper Nybegynder
29. marts 2003 - 17:52 #15
Np! =)
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