Avatar billede sluppermanden Nybegynder
23. juni 2004 - 16:25 Der 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>

Det kalder funktionen find()

  <iframe name="iframe" src="about:blank" width="0" height="0"></iframe>
  <script language="javascript">
  <!--
    function find()
    {
        iframe.location.href='hentby.asp?postnr='+document.tilmelding.postnr.value;
        document.tilmelding.kommune.focus();
    }
  //-->
  </script>

Den kalder "hentby.asp"

findby.asp
========================

<html>
<head>
</head>

<%
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 ???

Er der nogen der kan hjælpe mig.

Bemærk at koden virker fint hos mig.

På forhånd Tak
Rasmus
Avatar billede thesurfer Nybegynder
23. juni 2004 - 17:14 #1
1) hvis "postnr" er af typen "tal" (dvs, må ikke indeholder bogstaver): postnr = " & CInt(Request.Querystring("postnr")))

2) "by" er et reserveret ord. Kald feltet noget andet. Du kan vist også bruge [by] eller `by` i stedet.

Ret og kom med feedback.
Avatar billede thesurfer Nybegynder
23. juni 2004 - 17:16 #2
"If IsNumeric(CStr("..? Du checker om en string, er et tal?

Prøv med: "If IsNumeric(CInt("
Avatar billede sluppermanden Nybegynder
23. juni 2004 - 23:40 #3
Desværre, ingen af delende virker.

Jeg leger lidt med ideen om at det kan være en script fejl.
Eftersom at der kun er enkelte bruger der har fejlen.
Avatar billede sluppermanden Nybegynder
23. juni 2004 - 23:47 #4
Det er lykkedes mig at reproducere fejlen.

http://www.farumfamiliesvom.dk/admin/test/hentby.asp?postnr=3500
Avatar billede thesurfer Nybegynder
26. juni 2004 - 12:12 #5
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
Avatar billede sluppermanden Nybegynder
06. september 2004 - 11:41 #6
Lukker
Avatar billede thesurfer Nybegynder
06. september 2004 - 21:37 #7
Fadt du en løsning?
Avatar billede thesurfer Nybegynder
06. september 2004 - 21:38 #8
rettelse: fandt du en løsning?
Avatar billede sluppermanden Nybegynder
07. september 2004 - 11:27 #9
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å.
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