23. juni 2004 - 16:25Der er
8 kommentarer og 1 løsning
Error: top.tildmelding.by is null or not an object.
Jeg har et problem. Jeg har en hjemmeside som er i luften. Jeg her ikke selv nogen problemer med den. Men ca. 3 % af min brugere for en fejl.
A runtime error has occured. Line 7. Error: top.tildmelding.by is null or not an object.
Jeg har fundet stedet i koden. Det starter med at man indtaster et postnr i dette felt. <TR> <TD width="108">Postnr</TD> <TD width="468"><INPUT type="text" name="postnr" size="50" value="<%=Request.Form("postnr")%>" ID=Text1 onBlur="find();"></TD> </TR>
<% If IsNumeric(CStr(Request.Querystring("postnr"))) Then
Dim Con Set Con = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Request.ServerVariables("APPL_PHYSICAL_PATH") & "\log\ffs.mdb"
Set rs = Con.Execute("select by from postnr where postnr = " & Request.Querystring("postnr")) If Not rs.EOF Then Response.Write "<body onLoad=""top.tilmelding.by.value='" & rs("by") & "';"">" Else Response.Write "<body onLoad=""top.tilmelding.by.value='';"">" End If
Set rs = Nothing Con.Close Set Conn = Nothing End If %>
</body> </html>
Jeg går udfra at jeg fejlen sker her. If Not rs.EOF Then Response.Write "<body onLoad=""top.tilmelding.by.value='" & rs("by") & "';"">"
Men i IF-sætntingen ovenfor burde der være taget højde for at object ikke er null, ikke ???
Jeg ved ikke lige hvad du mener.. men her er et par gode råd:
1) Du skal checke, om man overhovedet bruger "postnr", dvs ?postnr=. Hvis man bare bruger "hentby.asp" (uden "?postnr"), får man fejlen:
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'postnr ='.
/admin/test/hentby.asp, line 16
En mulig løsning: if request.querystring("postnr") <> "" then dim postnr postnr = request.querystring ..osv..
2) Du skal checke, om der står noget i "postnr", dvs ?postnu=noget-her Hvis man bare bruger "hentby.asp?postnr=" eller "hentby.asp?postnr=hugo", vil du få fejlen:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'CInt'
/admin/test/hentby.asp, line 9
Mulig løsning: CInt kan kun bruge på tal. Derfor:
if IsNumeric(postnr) then ' "postnr" er variabeln, fra løsning nr 1 ' asp kode der henter by
--------
Et lidt større eksempel: <% if request.querystring("postnr") <> "" then
dim postnr postnr = request.querystring("postnr")
if IsNumeric(postnr) and postnr <> "" then
' "hent by"-koden indsættes her
else
response.write "postnummeret er enten ikke tal, eller også er det tomt.
end if
else response.write "Du skal skrive et postnummer" end if
Nej, jeg blev nødtil at åbne feltet med by så man selv kan taste by ind hvis det ikke virker. Det var det bedste jeg kunne opnå.
Synes godt om
Ny brugerNybegynder
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.