ASP查询结果显示在指定的日期内,高手指点下
系统数据库里有一百位老师需要设计一个选择上课老师的页面
该页面要按照老师的ID排序,分别显示出这一百名老师未来20天的上课记录,如现在是10月1号要显示出1号至20号的上课记录,A老师10月1号上哪几节课,2号上哪几节课,3号上哪几节课,如果有一天没有课程就显示无上课记录,依此类推,请高手指点一下.
目前我的设计是先通过老师的ID循环
然后再for循环日期
查询该日期该名老师有哪些上课记录,如没有就显示无上课记录
这样一个大循环,用来循环老师ID
在大循环里面再有一个小循环查询老师对应的上课记录
每次小循环就要一条SQL语句
一个页面要进行数据库操作一千多次,所以非常慢,打开要几十秒,现在希望有更好的方法实现.
我写的语句在下面:
<% Dim sqlzdzy2,rszdzy2
sqlzdzy2="select * from userS order by id asc"
set rszdzy2=server.CreateObject("adodb.recordset")
rszdzy2.open sqlzdzy2,conn,1,2
%>
<%
do while not rszdzy2.eof '大循环按照老师的ID显示所有老师
%>
<div id="div<%=rszdzy2("id")%>"> '这里是一个层,当下拉框选择该老师姓名时,只显示该老师的上课记录
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#E6FFE6">
<tr>
<td height="25" colspan="2" align="left" bgcolor="#FFE188"><b><%=rszdzy2("zname")%>上课安排记录</b></td>
</tr>
<tr>
<% dim dateabb,dateaaa,datebbb
dateabb=1
datebbb=DateAdd("d",20, now()) '这里是设置小循环当前日期加20天,超过就跳出小循环
do while dateaaa<datebbb
dateaaa=DateAdd("y", dateabb, date)
dateabb=dateabb+1
%>
<td width="150" align="center" bgcolor="#EEEEEE"><%=rszdzy2("zname")%>老师<%=dateaaa%></td>
<td height="25" align="left">
<% dim sqltj,rstj,km_skdateA
km_skdateA=Year(Date)&"-"&Month(Date)&"-"&Day(dateaaa)'设置日期为当前循环日期
sqltj="select * from bf_skap where km_skls='"&rszdzy2("id")&"' and km_skdate=#"&CDate(km_skdateA)&"#" '查询数据库显示该老师ID下当前日期是否有上课记录
set rstj=server.CreateObject("adodb.recordset")
rstj.open sqltj,conn,1,2
If rstj.Eof And rstj.Bof Then
%>
没有上课记录!
<%
else
do while not rstj.eof
%>
【<%=rstj("km_sksjAS")%>:<%=rstj("km_sksjAF")%>--<%=rstj("km_sksjBS")%>:<%=rstj("km_sksjBF")%> 】
<%
rstj.movenext
loop
set rstj=nothing
end if
%> </td>
</tr>
<% loop '小循环结束
dateabb=0
dateaaa=0
%>
</table></div>
<%rszdzy2.movenext
loop '大循环结束
set rszdzy2=nothing %></td>
<tr>
<td> </td>
</tr>
</table>