26. april 2004 - 10:06Der 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
<% 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 %>
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.
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"> </td><td height="10"> </td></tr> <tr><td width="45"> </td><td class="tekstboks3">Der er ingen 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 %>
<% Antal=0 if isNumeric(ID) then Set rs1=objConn.Execute("SELECT COUNT(replyid) FROM indlaeg WHERE replyid like " & rs("id") & "") Antal=rs1(0).Value
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"> </td><td height="10"> </td></tr> <tr><td width="45"> </td><td class="tekstboks3">Der er ingen indlæg. <% else Do until rs.eof %> <tr><td class="tekstboks" height="5" width="45"> </td><td class="tekstboks"></td></tr> <tr><td class="tekstboks" width="45"> </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"> </td> <td class="tekstboks3"><%=rs("navn")%></td> <td class="tekstboks" width=10"> </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 %>
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.
<% 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"> </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"> </td> </tr> <tr valign="top"> <td width="45" class="tekstboks"> </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 * ************************************************************************************ >
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"> </td><td height="10"> </td> </tr> <tr> <td width="45"> </td><td class="tekstboks3">Der er ingen indlæg.
<% else Do until rs.eof %> <tr> <td class="tekstboks" height="5" width="45"> </td><td class="tekstboks"></td> </tr> <tr> <td class="tekstboks" width="45"> </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"> </td> <td class="tekstboks3"><%=rs("navn")%></td> <td class="tekstboks" width=10"> </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"> </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 %>
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")
<% if rs.eof or rs.bof then %> <tr><td class="tekstboks" width="45"> </td><td class="tekstboks3">Der er ingen indlæg.
<% else
Do until rs.eof %> <tr><td height="5" width="45" class="tekstboks"> </td><td colspan="3" class="tekstboks"> </td></tr> <tr><td class="tekstboks" width="45"> </td><td colspan="3" class="tekstboks3"> <strong>Dato:</strong> <%=rs("dato")%><br><br>
<% 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 %>
<% 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 %>
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.