28. marts 2003 - 20:32Der 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 ?
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
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
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)
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.
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
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.