Avatar billede plato Juniormester
26. april 2004 - 10:06 Der er 19 kommentarer og
2 løsninger

Ignorer tomt felt ASP

Hejsa NG.

Jeg benytter nedenstående kode til at vise en dato for nyeste besvarelse, til et indlæg i et i forum.

Men hvis der ikke er kommet en besvarelse på et indlæg er feltet jo tomt, og så giver siden fejl:

ADODB.Field error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.


Hvordan for jeg koden til at ignorer at et felt er tomt?
Håber nogen kan hjælpe.

<%
Antal=0
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
Antal=rs2(0).Value
                                                   
Response.Write "" & Antal & ""
end if
%>
Avatar billede tzag_dk Nybegynder
26. april 2004 - 10:57 #1
Prøv det her :-)

<%
Antal=0
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
Antal=rs2(0).Value
 
  if Antal <> "" then                                                 
  Response.Write "" & Antal & ""
  else
  Response.Write "0"
  end if
end if
%>
Avatar billede tzag_dk Nybegynder
26. april 2004 - 10:59 #2
Sådan her med response.write felterne :-)

  if Antal <> "" then                                                 
  Response.Write(Antal)
  else
  Response.Write("0")
  end if
Avatar billede plato Juniormester
26. april 2004 - 11:47 #3
Desværre den kommer med samme fejl.
Avatar billede tzag_dk Nybegynder
26. april 2004 - 11:51 #4
Hvad med dette så?
  if CInt(Antal) <> "" then                                                 
  Response.Write(Antal)
  else
  Response.Write("0")
  end if
Avatar billede plato Juniormester
26. april 2004 - 11:57 #5
Virker heller ikke.

Problemet er:
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")

Hvis der ingen besvarelser er, så er replyid tomt.
replyid står jo i SELECT (replyid LIKE) sætningen, kan det have noget med det at gøre?
Dog skal jeg bruge replyid for at den henter den rigtige, hvis der er en besvarelse.
Avatar billede plato Juniormester
26. april 2004 - 11:58 #6
Der er faktisk slet ikke noget felt hvis der ingen besvarelser er.
Avatar billede tzag_dk Nybegynder
26. april 2004 - 12:54 #7
Ok, så prøv med dette:

if not CInt(Antal) = CInt("0") then
Response.Write(Antal)
else
Response.Write("0")
end if
Avatar billede plato Juniormester
26. april 2004 - 13:22 #8
Viser dig lige hele koden, det virker nemlig heller ikke.. Men det kan jo være noget andet der er galt.


<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM forumoversigt WHERE id =" & Request.Querystring("id") & ""
Set rs = objConn.Execute(strSQL)

%>
                   
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")   

set rs = Conn.Execute("select * From indlaeg where forumId = '" & Request.QueryString("id") & "' order by id ASC")
                       
                        %>


<% if rs.eof or rs.bof then %>
<tr><td height="10">&nbsp;</td><td height="10">&nbsp;</td></tr>
<tr><td width="45">&nbsp;</td><td class="tekstboks3">Der er ingen indlæg.
                           
<% else
Do until rs.eof %>
<tr><td class="tekstboks" height="5" width="45">&nbsp;</td><td class="tekstboks"></td></tr>       
<tr><td class="tekstboks" width="45">&nbsp;</td><td class="tekstboks3"><a href="forumtest.asp?mode=forum_topic_read&id=<%=rs("id")%>"><%=rs("emne")%></a><br></td>
<td class="tekstboks" width=10">&nbsp;</td>
<td class="tekstboks3"><%=rs("navn")%></td>
<td class="tekstboks" width=10">&nbsp;</td>
<td class="tekstboks3">
                       
<%
Antal=0
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
Antal=rs2(0).Value
 
if not CInt(Antal) = CInt("0") then
Response.Write(Antal)
else
Response.Write("0")
end if
end if
%>

<%
Antal=0
if isNumeric(ID) then
Set rs1=objConn.Execute("SELECT COUNT(replyid) FROM indlaeg WHERE replyid like " & rs("id") & "")
Antal=rs1(0).Value
                                                   
Response.Write "" & Antal & ""
end if
%>

</td>                                   
                                       
<% rs.movenext
loop
end if %>
                       
                       
<%
rs.close%>
Avatar billede tzag_dk Nybegynder
26. april 2004 - 13:37 #9
Måske sådan her:

<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM forumoversigt WHERE id =" & Request.Querystring("id") & ""
Set rs = objConn.Execute(strSQL)

set rs = objConn.Execute("select * From indlaeg where forumId = '" & Request.QueryString("id") & "' order by id ASC")
%>


<% if rs.eof then %>
<tr><td height="10">&nbsp;</td><td height="10">&nbsp;</td></tr>
<tr><td width="45">&nbsp;</td><td class="tekstboks3">Der er ingen indlæg.
<% else
Do until rs.eof %>
<tr><td class="tekstboks" height="5" width="45">&nbsp;</td><td class="tekstboks"></td></tr>       
<tr><td class="tekstboks" width="45">&nbsp;</td><td class="tekstboks3"><a href="forumtest.asp?mode=forum_topic_read&id=<%=rs("id")%>"><%=rs("emne")%></a><br></td>
<td class="tekstboks" width=10">&nbsp;</td>
<td class="tekstboks3"><%=rs("navn")%></td>
<td class="tekstboks" width=10">&nbsp;</td>
<td class="tekstboks3">
                       
<%
Antal=0
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
Antal=rs2(0).Value
    if not CInt(Antal) = CInt(0) then
    Response.Write(Antal)
    else
    Response.Write("0")
    end if
end if
%>

<%
Antal=0
if isNumeric(ID) then
Set rs1=objConn.Execute("SELECT COUNT(replyid) FROM indlaeg WHERE replyid like " & rs("id") & "")
Antal=rs1(0).Value
Response.Write "" & Antal & ""
end if
%>

</td>                                   
                                       
<%rs.movenext
loop
end if
rs.close%>
Avatar billede plato Juniormester
26. april 2004 - 14:32 #10
Hvis jeg roder nok med det, kan jeg godt få koden til at, lade være med at melde fejl. Men så viser den til gengæld heller intet.

Det der undrer mig er at, koden til at tælle antal besvarelser virker fint:
<%
Antal=0
if isNumeric(ID) then
Set rs1=objConn.Execute("SELECT COUNT(replyid) FROM indlaeg WHERE replyid like " & rs("id") & "")
Antal=rs1(0).Value
Response.Write "" & Antal & ""
end if
%>

Og det er næsten den samme select sætning i begge to. Hvis der ingen besvarelser er, skriver overstående kode et fint rundt 0.
Avatar billede tzag_dk Nybegynder
26. april 2004 - 16:04 #11
Når du køre den første kode, hvad for en fejl kommer den så med?
Avatar billede tzag_dk Nybegynder
26. april 2004 - 16:05 #12
eller har du evt et link?
Avatar billede plato Juniormester
26. april 2004 - 16:16 #13
Den kommer med samme fejl.
Linie 185 som er:
Antal=rs2(0).Value

Du kan se forum her:
http://www.filmnet.dk/forumtest.asp?mode=forum_oversigt
klik på det fora hvor der er et indlæg.
Avatar billede tzag_dk Nybegynder
26. april 2004 - 16:30 #14
kan du ikke lige poste hele koden for forumtest.asp?
Avatar billede plato Juniormester
26. april 2004 - 16:37 #15
Jooo, men den er lang. Du skal kopiere den over i Notesblok.

Forumoversigt:

<!
************************************************************************************
*                      Forum oversigt                                            *                             
************************************************************************************
>
<% if mode = "forum_oversigt" then%>

<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td valign="top">
      <table border="0" cellpadding="0" cellspacing="0" width="775">
        <tr valign="top">
          <td width="45" class="tekstboks">&nbsp;</td> 
          <td class="tekstboks2"><strong>Forum oversigt</strong></td>
          <td class="tekstboks" width=10">&nbsp;</td>
      <td class="tekstboks2"><strong>Emner</strong></td>
      <td class="tekstboks" width=10">&nbsp;</td>
      <td class="tekstboks2"><strong>Nye indlæg</strong></td>
    </tr>

<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM forumoversigt ORDER BY id"
Set rs = objConn.Execute(strSQL)

  Do While Not rs.EOF
    id = rs("id")
    overskrifter = rs("overskrifter")
    omtale = rs("omtale") 
%>

    <tr>
      <td class="tekstboks" height="5" width="45">&nbsp;</td><td class="tekstboks"></td>
    </tr>
    <tr>
      <td class="tekstboks" width="45"></td><td class="tekstboks3" width="400">
            <strong><u><a href="forumtest.asp?mode=forum_topic&Id=<%=id%>"><%=overskrifter%></a></u></strong><br><%=omtale%><br><br></td>
      <td class="tekstboks" width=10">&nbsp;</td>
      <td class="tekstboks2" width="30">

<%
AntalKommentarer=0
if isNumeric(ID) then
  Set rs1=objConn.Execute("SELECT COUNT(*) FROM indlaeg where forumid like " & ID)
  AntalKommentarer=rs1(0).Value
                                                   
  Response.Write "" & AntalKommentarer & ""
end if
%>
      </td>
      <td class="tekstboks" width=10">&nbsp;</td>
      <td class="tekstboks2">
<!
************************************************************************************
*                      Viser dato for sidste indlæg                                *                             
************************************************************************************
>
<%
If AntalKommentarer > 0 Then
  strSQL = "SELECT TOP 1 emne, dato FROM indlaeg Where ForumId like " & rs("id") & " Order by ID DESC"
  Set rsEmne = objConn.Execute(strSQL)
    Response.Write " " & Left(rsEmne("emne"), 25) & "...<br>" & rsEmne("dato") & ""
  rsEmne.Close
End If
%>
<%
  rs.movenext
    loop
  rs.Close
  objConn.Close
%>      </td>

    <tr>
      <td class="tekstboks" height="5" width="45" colspan="3">&nbsp;</td>
    </tr>
    <tr valign="top">
      <td width="45" class="tekstboks">&nbsp;</td>
      <td colspan="5" class="tekstboks2">
            Filmnet.dk's forum kan benyttes frit, alt efter hvilket rum man skriver i. Synes du der mangler et forum, er du velkommen til at skrive til support@filmnet.dk med dit forslag.
            Indlæg der indeholder racistiske, grove eller nedladende ord m.m., vil blive slettet.
            Filmnet.dk fratager alt ansvar for eventuelle links til ulovlige sider, men vil i de fleste tilfælde slette disse.
            Alt køb og salg af produkter er på eget ansvar. Filmnet.dk kan ikke stilles til ansvar, overfor eventuelle problemer der måtte opstå i den forbindelse.
      </td>
    </tr>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>

<%end if%>

Vis indlæg i forum:

<!
************************************************************************************
*                      Viser indlæg i de forskellige fora                        *                             
************************************************************************************
>

<% if mode = "forum_topic" then%>
<table border="0" cellspacing="0" cellpadding="0">
<%
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open strConnect   

strSQL = "SELECT * FROM forumoversigt WHERE id =" & Request.Querystring("id") & ""
Set rs = objConn.Execute(strSQL)

%>
  <tr>
    <td valign="top"> <table width="775" border="0" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="45" class="tekstboks">&nbsp;</td>
    <td colspan="3" class="tekstboks2"><strong><a href="forumtest.asp?mode=forum_oversigt">Forum oversigt</a></strong> -> <strong></strong></td>
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3" align="right"><strong><a href="forumtest.asp?mode=forum_topic_new&Id=<%=rs("id")%>">Nyt indlæg</a></strong></td>
  </tr>
  <tr>
    <td class="tekstboks" height="5" width="45">&nbsp;</td><td class="tekstboks"></td>
  </tr>       
  <tr>
    <td class="tekstboks" width="45">&nbsp;</td><td class="tekstboks3"><strong>Emne</strong></a><br></td>
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3"><strong>Navn</strong></td>
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3"><strong>Dato for indlæg</strong></td>
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3"><strong>Besvarelser</strong></td>                       
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")   

set rs = Conn.Execute("select * From indlaeg where forumId = '" & Request.QueryString("id") & "' order by id ASC")
                       
                        %>

<% if rs.eof or rs.bof then %>
  <tr>
    <td height="10">&nbsp;</td><td height="10">&nbsp;</td>
  </tr>
  <tr>
    <td width="45">&nbsp;</td><td class="tekstboks3">Der er ingen indlæg.
                           
<% else
  Do until rs.eof %>
  <tr>
    <td class="tekstboks" height="5" width="45">&nbsp;</td><td class="tekstboks"></td>
  </tr>       
  <tr>
    <td class="tekstboks" width="45">&nbsp;</td>
    <td class="tekstboks3"><a href="forumtest.asp?mode=forum_topic_read&id=<%=rs("id")%>"><%=rs("emne")%></a><br></td>
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3"><%=rs("navn")%></td>
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3">
<!
************************************************************************************
*                      Viser dato for seneste indlæg                              *                             
************************************************************************************
>
<%
Antal=0
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
Antal=rs2(0).Value
    if not CInt(Antal) = CInt(0) then
    Response.Write(Antal)
    else
    Response.Write("0")
    end if
end if
%>
                       
    </td>       
    <td class="tekstboks" width=10">&nbsp;</td>
    <td class="tekstboks3">
<!
************************************************************************************
*                      Tæller antal besvarelser til et indlæg                    *                             
************************************************************************************
>
<%
Antal=0
if isNumeric(ID) then
  Set rs1=objConn.Execute("SELECT COUNT(replyid) FROM indlaeg WHERE replyid like " & rs("id") & "")
  Antal=rs1(0).Value
  Response.Write "" & Antal & ""
end if
%>


    </td>                                   
                                       
<%
rs.movenext
loop
end if
rs.close
%>


                   
  </td>
</tr>
</table></td>
</tr>
</table>
<%end if%>


Læs besked i forum:

<% if mode = "forum_topic_read" then%>

            <table border="0" cellspacing="0" cellpadding="0">
        <%
                                strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")
                                Set objConn = Server.CreateObject ("ADODB.Connection")
                                objConn.Open strConnect   

                                strSQL = "SELECT * FROM forumoversigt WHERE id =" & Request.Querystring("id") & ""
                                Set rs = objConn.Execute(strSQL)

%>
                            <%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.Mappath("forum.mdb")   

set rs = Conn.Execute("select * From indlaeg where id like '" & request.querystring("id") & "' OR replyid LIKE '" & Request.Querystring("id") & "' order by id ASC")
                       
                        %>
              <tr>
                <td valign="top"> <table width="775" border="0" cellpadding="0" cellspacing="0">
                                <tr valign="top">
                    <td width="45" class="tekstboks">&nbsp;</td>
                      <td class="tekstboks2"><strong><a href="forumtest.asp?mode=forum_oversigt">Forum oversigt</a></strong> ->  <strong><a href="forumtest.asp?mode=forum_topic&Id=<%=rs("forumid")%>">Indlæg</a></strong> -> <strong><%=rs("emne")%></strong></td>
            <td class="tekstboks" width=10">&nbsp;</td>
            <td class="tekstboks3" align="right"><strong><a href="forumtest.asp?mode=forum_topic_reply&Id=<%=rs("id")%>">Besvar indlæg</a></strong></td></tr>



                            <% if rs.eof or rs.bof then %>
                            <tr><td class="tekstboks" width="45">&nbsp;</td><td class="tekstboks3">Der er ingen indlæg.
                           
                            <% else
                           
                                Do until rs.eof %>
                                <tr><td height="5" width="45" class="tekstboks">&nbsp;</td><td colspan="3" class="tekstboks">&nbsp;</td></tr>   
                            <tr><td class="tekstboks" width="45">&nbsp;</td><td colspan="3" class="tekstboks3">
                                    <strong>Dato:</strong> <%=rs("dato")%><br><br>
                                                       
                       
                                    <%=rs("besked")%><br><br>- <%=rs("navn")%>       
                                   
                                       
                                <%
                               
                                rs.movenext
                                loop
                            end if %>
                       
                       
                <%
                rs.close%>

                   
              </td>
                    </tr>
                  </table></td>
              </tr>
            </table>
<%end if%>


Poster ikke Nyt Indlæg's koden. Mener ikke det er nødvendigt.
Avatar billede tzag_dk Nybegynder
26. april 2004 - 16:57 #16
Prøv at sætte det her ind:

<%
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
    if not rs2("dato") = "" then
    Response.Write(rs2("dato"))
    else
    Response.Write("")
    end if
end if
%>
Avatar billede plato Juniormester
26. april 2004 - 17:20 #17
Hvis der er en besvarelse viser den ikke datoen, hvis der ikke er en besvarelse kommer denne fejl:
error '80020009'
Exception occurred.

Men kun i et forum hvor der er postet et indlæg.

Linie 183    if not rs2("dato") = "" then
http://www.filmnet.dk/forumtest.asp?mode=forum_topic&Id=2

Det er ved at være meget mystisk.. Kan du stadig finde på ideér ;-)
Avatar billede koldy Nybegynder
26. april 2004 - 17:30 #18
<%
Antal=0
if isNumeric(ID) then
Set rs2=objConn.Execute("SELECT TOP 1 dato FROM indlaeg WHERE replyid like " & rs("id") & " ORDER BY dato DESC")
If not rs2.EOF Then
  Antal=rs2(0).Value
End If                                                 
Response.Write "" & Antal & ""
end if
%>
Avatar billede plato Juniormester
26. april 2004 - 17:31 #19
tzaq.com smid lige en svar, så for du også nogle ptz :) Du har kmæpet bravt.
Det virker nu.
Avatar billede tzag_dk Nybegynder
26. april 2004 - 17:56 #20
ok, men jeg syntes at du skal bruge fx Dreamweaver i stedet for notepad til at lave dine sider. For der er en masse syntax fejl i scriptet :-)

Svar :-)
Avatar billede plato Juniormester
26. april 2004 - 19:35 #21
Det vil jeg prøve :)
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