最后,我们来介绍导出日期列表页面部分的代码。我们在前面通过IDC技术产生过日期的列表页面,但是在静态页面导出时采用的方法与其不同。前面通过IDC所产生的页面在浏览器端通过Java来完成对每个日期产生最终页面的工作。这样会造成产生的页面文件过于庞大。因为对于每个日期,都要包含下面的一段Java代码:<script>yue1=yue2;yue2=4;if (yue1!=yue2){tt=0;if (yue1==0){document.write('<TABLE BORDER="BORDER" ALIGN="CENTER"><th><tr><h2>1999-4月</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr><tr>')}else{document.write('</tr></table>')document.write('<TABLE BORDER="BORDER" ALIGN="CENTER"><th><tr><h2>1999-4月</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr><tr>')}}ri=22;xingqi=5;if (tt!=0){if (xingqi<7) { document.write('<td><FONT SIZE=" 1"><a href=../../"goto.idc?day=1999-04-22" TARGET="goto"><b>22</b></a></FONT></td>');}else { document.write('<td><FONT SIZE=" 1"><a href=../../"goto.idc?day=1999-04-22" TARGET="goto"><b>22</b></a></FONT></td></tr><tr>'); } }else{ tt=1; for (i=1;i < xingqi;i ){ document.write('<td></td>'); } document.write('<td><FONT SIZE=" 1"><a href=../../"goto.idc?day=1999-04-22" TARGET="goto"><b>22</b></a></FONT></td>'); if (xingqi==7){ document.write('</tr><tr>'); } }</script> 如果为一年的报纸内容来生产一个页面的话,其大小可能会超过几百KB。这对于局域网来说,算不了什么。这几百KB数据所带来的延迟用户一般是察觉不到的。因为在局域网上传送这些数据所耗费的时间可能还不到一秒。而对于Internet用户,就不得不考虑其有限的带宽了。如此之大的页面文件所带来的延迟,恐怕是用户所不能承受的。所以必须缩小此页面文件的尺寸。我们使用游标和流控制语句在进行静态页面导出的时候,在服务器端完成相应的判断工作。从而只生产"纯"HTML文件。下面就是实现此功能的代码段: declare @dy int, @date varchar(20), @yue varchar(2), @yue2 varchar(2), @ri int, @xingqi int, @year int, @outchar varchar(1600), @tt int
create table ##daylist (out varchar(1600))
set @yue2='00'set @tt=0
declare point3 cursor for SELECT distinct dy=datepart(dy,riqi),date=left(convert(varchar(40),riqi,20),10),yue=convert(varchar(2),datepart(mm,riqi)),ri=datepart(dd,riqi),xingqi=datepart(dw,riqi),year=datepart(yy,riqi)FROM gaojianwhere kanwu = '出版报' order by year,dyfor read only
open point3fetch point3 into @dy,@date,@yue,@ri,@xingqi,@yearwhile (@@fetch_status=0)beginif @yue<>@yue2beginset @tt=0if @yue2=0 insert into ##daylist values('<TABLE BORDER="BORDER" ALIGN="CENTER"><th><tr><h2>' convert(varchar(4),@year) '年' @yue '月份</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr>')else insert into ##daylist values('</tr></table><TABLE BORDER="BORDER" ALIGN="CENTER"><th><tr><h2>' convert(varchar(4),@year) '年' @yue '月份</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td></tr>')endif @tt<>0 if @xingqi < 7 set @outchar=@outchar '<td><a href="' @date '/index.htm" TARGET="new">' convert(varchar(2), @ri) '</a></td>' else set @outchar=@outchar '<td><a href="' @date '/index.htm" TARGET="new">' convert(varchar(2), @ri) '</a></td></tr><tr>'else begin set @tt=1 set @outchar= case when @xingqi=1 then '' when @xingqi=2 then '<td></td>' when @xingqi=3 then '<td></td><td></td>' when @xingqi=4 then '<td></td><td></td><td></td>' when @xingqi=5 then '<td></td><td></td><td></td><td></td>' when @xingqi=6 then '<td></td><td></td><td></td><td></td><td></td>' when @xingqi=7 then '<td></td><td></td><td></td><td></td><td></td><td></td>' end if @xingq