注册 登录
编程论坛 ASP技术论坛

请高人指点关于重复显示记录的问题

tazdm 发布于 2008-06-05 17:06, 1373 次点击
请高手给看看这一段有问题吗,怎样才能变成不重复的,现在页面上:假如有3条记录的话,它会在页面上显示出6条记录,不知怎么处理,请指点一下,谢谢了,是不是下面缺少什么代码,或是执行了两遍,才出这样的情况
<%
news_type = "公司动态"
sql="select top 12 news.* from news,News_Class where news.news_class_id=news_class.news_id and news_language=0 order by news_date desc"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
  do while not rs.eof
%>
          <div id="newscont">
            <div id="newsbg0"><a href="showNews.asp?news_id=<%=rs("news_id")%>"><%=rs("news_title")%></a></div>
          </div>
          <%rs.movenext
  loop%>
  <%
    rs.close
    set rs=nothing
end if
%>
17 回复
#2
小丁丁2008-06-05 17:27
if not rs.eof then
  do while not rs.eof
loop
end if
去掉一个循环呢。
#3
hmhz2008-06-05 18:07
sql="Select top 12 news from news where news_language=0 union all Select top 12 news from News_Class where news_language=0 order by news_date desc"
#4
tazdm2008-06-06 08:44
回复 2# 小丁丁 的帖子
谢谢您的回答,但是去掉if循环还是老毛病;
去掉dowhile假如有3个记录,只出现第一个记录,而且还是重复两次

[[it] 本帖最后由 tazdm 于 2008-6-6 09:05 编辑 [/it]]
#5
tazdm2008-06-06 08:46
回复 3# hmhz 的帖子
谢谢,我把你给的代码换上后无法显示了,出下面的错误:
Microsoft JET Database Engine 错误 '80004005'

ORDER BY 表达式 (news_date) 包含当前查询未选定的字段。只有第一次查询所包含的字段才可以包含在 ORDER BY 表达式中。

/newindex.asp,行 87
#6
zhangyao32872008-06-06 08:50
sql="select top 12 news.* from news left join News_Class on news.news_class_id=news_class.news_id and news_language=0 order by news_date desc"
#7
tazdm2008-06-06 08:58
回复 6# zhangyao3287 的帖子
出了错误
Microsoft JET Database Engine 错误 '80040e14'

不支持连接表达式。

/newindex.asp,行 87
#8
zhangyao32872008-06-06 09:03
你可以不可以把你的两个表的结构简单的发一下?
#9
tazdm2008-06-06 09:13
回复 8# zhangyao3287 的帖子
news_id    news_class_id    news_title    news_ahome    news_date    news_author    news_content    news_keyword    news_count
115    7    22    42    2005-11-30    Admin    <P><FONT face=Verdana><FONT face=Verdana><FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test<FONT face=Verdana>test</FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></P>    testtest    38
116    7    Admin    来    2005-11-30    Admin    <FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin<FONT face=Verdana>Admin</FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT>    Admin    59


news_id    news_type    news_language
1    公司动态    0
7    News    1
9    Dynamic industry    1
12    22    1
#10
zhangyao32872008-06-06 09:20
你的语句应该是没有问题的啊?你用FOR循环测试一下
<%
news_type = "公司动态"
sql="select top 12 news.* from news,News_Class where news.news_class_id=news_class.news_id and news_language=0 order by news_date desc"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
  For i = 0 to rs.recordcount
  if rs.eof then exit for
%>
          <div id="newscont">
            <div id="newsbg0"><a href="showNews.asp?news_id=<%=rs("news_id")%>"><%=rs("news_title")%></a></div>
          </div>
          <%rs.movenext
  next%>
  <%
    rs.close
    set rs=nothing
end if
%>
#11
zhangyao32872008-06-06 09:37
sql="select top 12 news.* from news right join News_Class on news.news_class_id=news_class.news_id where news_language=0 order by news_date desc"
#12
tazdm2008-06-06 09:40
回复 10# zhangyao3287 的帖子
谢谢你了,但还是不行,还是显示重复,如果上面没问题的话,是不是出在其它程序或数据库呢.比如说上面中的shownews.asp,象这个有可能吗?
#13
tazdm2008-06-06 09:48
回复 11# zhangyao3287 的帖子
真是太谢谢您了,改成这一条不重复了,就是显示时,就象滚动时的,出两遍但是第一遍的内容滚上去后就看不到了,第二遍的内容在中间,是不是内容多了第一条内容就可以在最上边呢
#14
zhangyao32872008-06-06 09:49
你输出的6条记录是对仅有3条的重复还是有新内容
news表和news_class表只有唯一的ID相同还是有的新闻内容都在news表里面
是否需要给news_class_id一个值呢?具体的情况我也不太清楚,只能从你贴上来的代码进行分析

sql="select top 12 news.* from news right join News_Class on news.news_class_id=news_class.news_id where news.news_language=0 and news.news_class_id= order by news_date desc"
#15
tazdm2008-06-06 09:57
回复 14# zhangyao3287 的帖子
仅有的3条重复,其它都是空白,等一下我试试添加多点内容试试,再告诉你结果,亿万分谢谢
#16
zhangyao32872008-06-06 10:03
是向上滚动么?给你不间断向上滚动代码,你试一下
<DIV id=demo style="OVERFLOW: hidden; HEIGHT: 180px">
    <DIV id=demo1>
     输出的需要滚动的代码
    </DIV>
    <DIV id=demo2 style="height:185px;"></DIV>
</DIV>
<SCRIPT language="javascript">
var speed=100;
demo2.innerHTML=demo1.innerHTML;
function Marquee(){
    if(demo2.offsetTop-demo.scrollTop<=0){
        demo.scrollTop-=demo1.offsetHeight;
    }
    else{
        demo.scrollTop++;
    }
}
var MyMar=setInterval(Marquee,speed);
demo.onmouseover=function() {clearInterval(MyMar)};
demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)};
</SCRIPT>
#17
tazdm2008-06-06 10:21
回复 16# zhangyao3287 的帖子
谢谢老大了,太佩服您了,不耽误您太多时间了,11楼前的就可以了,我加到10条后显示就很好了,而且循环滚动,它是12条一循环,2条空白.非常感激您.能方便留下您的qq号吗,以便与您交流.发短消息留也行
#18
zhangyao32872008-06-06 10:22
19312421
1