黑道总裁宠妻要加油:ASP程序问题.高手帮忙...!!!!!!!!!!!!!

来源:百度文库 编辑:高考问答 时间:2024/04/28 16:28:55
<%

strSql="Select * From News where News_ID="&request("News_ID")
set rs=server.createobject("adodb.recordset")
rs.open strSql,conn,1,1
dim News_sort,News_Topic,News_user,News_DateAndTime,News_Boby,News_topic_id
News_sort = rs("News_sort")
News_Topic = rs("News_Topic")
News_user = rs("News_user")
News_DateAndTime = rs("News_DateAndTime")
News_Boby = rs("News_Boby")
News_topic_id = rs("News_topic_id")

strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'"
set rs=server.createobject("adodb.recordset")
rs.open strSql,conn,1,1
dim Topic_Topic
Topic_Topic = rs("Topic_Topic")
%>

<td><%=Topic_Topic%></td>

<%=Topic_Topic%>死活不显示.
rs("Topic_Topic") 里有东西.而且是中文的.
News_ID是新闻的ID 为数字.
News_topic_id 也为数字.

主要是Topic表里的Topic_Topic不显示,其他都正常.

strSql="Select * From Topic where ( Topic_ID=1) Order By Topic_id" (正常)
strSql="Select * From Topic where Topic_ID='" & News_topic_id & "' Order By Topic_id" (错误)

News_topic_id的值在表里是1

我来试一试?

这里涉及到ADO的应用问题:

ASP程序问题.高手帮忙...!!!!!!!!!!!!!
悬赏分:30 - 离问题结束还有 14 天 23 小时
<%

strSql="Select * From News where News_ID="&request("News_ID")
set rs=server.createobject("adodb.recordset")
// 创建了一个名为rs 的 recordset 对象
rs.open strSql,conn,1,1
// 第一次引用rs对象.
dim News_sort,News_Topic,News_user,News_DateAndTime,News_Boby,News_topic_id
News_sort = rs("News_sort")
News_Topic = rs("News_Topic")
News_user = rs("News_user")
News_DateAndTime = rs("News_DateAndTime")
News_Boby = rs("News_Boby")
News_topic_id = rs("News_topic_id")

//请注意,这里缺少rs对象释放及关闭语句.

strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'"
set rs=server.createobject("adodb.recordset")
//在未关闭及释放前一个使用的rs对象的情况下,又建立一个同名rs对象.需注意, 这是不允许的.
rs.open strSql,conn,1,1
//相当于第二次引用rs对象,而这里的记录集并非如您想象的查询strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'"的结果,而是strSql="Select * From News where News_ID="&request("News_ID")的结果,自然,里面没有 rs("Topic_Topic") 的正确的值了.表都不一样嘛.
dim Topic_Topic
Topic_Topic = rs("Topic_Topic")
%>

<td><%=Topic_Topic%></td>

<%=Topic_Topic%>死活不显示.
问题补充:rs("Topic_Topic") 里有东西.而且是中文的.
News_ID是新闻的ID 为数字.
News_topic_id 也为数字.

主要是Topic表里的Topic_Topic不显示,其他都正常.

//解决办法:
将第而个查询里面的rs改为rs1,修改后的如下.
strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'"
set rs1=server.createobject("adodb.recordset")
rs1.open strSql,conn,1,1
dim Topic_Topic
Topic_Topic = rs1("Topic_Topic")
%>

<td><%=Topic_Topic%></td>

当然,如果还有问题,在此基础上看看楼上提出的ID的值的类型情况.
:)

还有一种方法,就是在我的注释 //请注意,这里缺少rs对象释放及关闭语句. 处加上释放及关闭rs对象的语句而不使用我的第一种方法.语句好象是:
set rs = noting
rs.close

你查查,记不太清楚了.很久没写ASP了.也懒得去查 :)

第一句“strSql="Select * From News where News_ID="&request("News_ID") ”

你用“request”接收的“News_ID”是字符型的,而“where News_ID”这里只认数值型的,所以你把接收的“News_ID”强制转换为数值型试试:CInt(request("News_ID"))
也就是:strSql="Select * From News where News_ID="&CInt(request("News_ID"))

直接去数据库里看看

rs("Topic_Topic") 里有东西吗

strSql="Select * From News where News_ID="&request("News_ID")
set rs=server.createobject("adodb.recordset")
rs.open strSql,conn,1,1
dim News_sort,News_Topic,News_user,News_DateAndTime,News_Boby,News_topic_id
News_sort = rs("News_sort")
News_Topic = rs("News_Topic")
News_user = rs("News_user")
News_DateAndTime = rs("News_DateAndTime")
News_Boby = rs("News_Boby")
News_topic_id = rs("News_topic_id")

strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'"
set rs=server.createobject("adodb.recordset")
rs.open strSql,conn,1,1
dim Topic_Topic
Topic_Topic = rs("Topic_Topic")

这有问题, 先你用了两个查询语句, 在第一个
strSql="Select * From News where News_ID="&request("News_ID")
set rs=server.createobject("adodb.recordset")
rs.open strSql,conn,1,1

时用rs.open打开一个连接。 再你再次用下一个查询语句时。
strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'"
set rs=server.createobject("adodb.recordset")
rs.open strSql,conn,1,1

你同样用了是rs.open,这里重复了。这里再次获得的rs("***")结果还是你第一个查询语句里内容, 因为你第一个表〔News〕里没有Topic_Topic这字段所以不会显示。

解决方法同楼上的一样你可以把第二个查询时用的rs改名为rs2即可。

建议你在没有再用到从数据库里读取数据时就关闭连接。set rs = noting rs.close

可能找到的这条数据内容是null或空

粗略看起来似乎是strSql="Select * From Topic where Topic_ID='" & News_topic_id & "'" 这句话的问题,也就是说,News_topic_id的值未必是你想要的值,建议用字符串常量替代News_topic_id的值,然后再用数字常量替代request("News_ID") ,看看能不能得到想要的结果,以便准确分析错误的位置