·您的位置: 首页 » 资源教程 » 编程开发 » 数据库 » SQL SERVER静态页面导出技术3

SQL SERVER静态页面导出技术3

类别: 数据库教程  评论数:0 总得分:0
静态页面导出实例分析:
下面讨论如何使用静态页面导出技术来实现我们在前面要求的各种功能。
首先,我们来看看要导出的页面文件的结构:
所有导出的页面都将被放在一个目录名为当日期的目录下。其中有两个非导出文件index.htm和show.htm文件。其作用同cbbinput目录中的default.htm和show.htm文件相类似。都是为了满足使页面能够正常显示的需要。之所以使用index.htm而不用default.htm为文件名,是因为大多数ISP提供的主页空间的目录省缺文件的名字都是index.htm。
当日的各个版面则导出为一个名为list.htm的文件。每个版面的文章题目列表则分别按顺序导出为1~n(n为当日的版面总数)个页面文件。其文件名也为1.htm~n.htm。当日所刊载的各个文章则以其id为文件名分别进行导出。在list.htm文件中,包含到各个版面页面文件的超链接。在各个版面的页面文件中,又包含到各个文章页面文件的超连接。
在出版报的主页上,还应该有一个用来显示日期的页面文件。每个日期的超链接都将与其页面文件所在的目录中的index.htm文件相对应。点击日期后,将弹出一个新的浏览器窗口。其中显示的是相应日期的报纸内容。
此外,还应当将此日各篇文章的配图文件也拷贝到此目录之下。
我们为此建立一个任务,它会在每天下午的六点执行,将当天报纸的内容导出为静态的HTML页面文件。此任务的代码如下(可以在本书配套光盘的SQLServer目录的子目录test下找到此段代码的文件,其文件名为webout.sql。它使用的模板文件也可以在此目录下找到):
use test
go
declare
@riqi varchar(20),
@filepath varchar(255),
@listfile varchar(255),
@command varchar(255)
set @riqi=left(convert(varchar(40),getdate(),20),10)
set @filepath=\'d:webout\'+@riqi+\'\'
set @command=\'md \'+@filepath
execute master.dbo.Xp_cmdshell @command
set @command=\'md \'+@filepath+\'images\'
execute master.dbo.Xp_cmdshell @command
set @command =\'copy d:testfiles*.* d:webout\'+@riqi+\'\'
execute master.dbo.Xp_cmdshell @command
set @command =\'copy d:testfilesimages*.* d:webout\'+@riqi+\'images\'
execute master.dbo.Xp_cmdshell @command
set @command =\'copy d:test\'+@riqi+\'*.* d:webout\'+@riqi+\'\'
execute master.dbo.Xp_cmdshell @command
set @listfile=@filepath+\'list.htm\'
execute sp_makewebtask
@outputfile=@listfile,
@query=\'select distinct banmian
from gaojian
where kanwu=\'\'出版报\'\' and datepart(yy,riqi)=datepart(yy,getdate()) and datepart(dy,riqi)=datepart(dy,getdate())\',
@templatefile=\'d:testlist.tml\',
@codepage=936

declare
@lists int,
@banmian varchar(64),
@filename varchar(64),
@search varchar(2000)
set @lists=0
declare point cursor for
select distinct banmian
from gaojian
where kanwu=\'出版报\' and datepart(yy,riqi)=datepart(yy,getdate()) and datepart(dy,riqi)=datepart(dy,getdate())
for read only

open point
fetch point into
@banmian
while (@@fetch_status=0)
begin
set @lists=@lists+1
set @filename=@filepath+convert(varchar(64),@lists)+\'.htm\'
set @search=\'SELECT id,timu,laiyuan
FROM gaojian
WHERE datepart(yy,riqi)=datepart(yy,convert(datetime,\'\'\'+@riqi+\'\'\'))
and datepart(dy,riqi)=datepart(dy,convert(datetime,\'\'\'+@riqi+\'\'\'))\'+
\'and banmian =\'\'\'+@banmian+\'\'\'and kanwu=\'\'出版报\'\'order by timu\'
execute sp_makewebtask
@outputfile=@filename,
@query=@search,
@templatefile=\'d:testlist2.tml\',
@codepage=936
fetch point into
@banmian
end
close point
deallocate point

declare @gaojianid int
declare point2 cursor for
select gaojian.id
from gaojian
where kanwu=\'出版报\' and datepart(yy,riqi)=datepart(yy,getdate()) and
datepart(dy,riqi)=datepart(dy,getdate())
for read only

open point2
fetch point2 into
@gaojianid
while (@@fetch_status=0)
begin
set @filename=@filepath+convert(varchar(64),@gaojianid)+\'.htm\'
set @search=\'SELECT timu,laiyuan,neirong,left(pics,10)+ STUFF(pics,1,21,\'\'\'\'),yuanwen
FROM gaojian
WHERE id=\'+convert(varchar(64),@gaojianid)
execute sp_makewebtask
@outputfile=@filename,
@query=@search,
@templatefile=\'d:testoutfile.tml\',
@codepage=936
fetch point2 into
@gaojianid
end
close point2
deallocate point2

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 gaojian
where kanwu = \'出版报\'
order by year,dy
for read only

open point3
fetch point3 into
@dy,@date,@yue,@ri,@xingqi,@year
while (@@fetch_status=0)
begin
if @yue<>@yue2
begin
set @tt=0
if @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>\')
end
if @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 @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>\'
end

insert into ##daylist values(@outchar)

set @yue2=@yue
set @outchar=\'\'

fetch point3 into
@dy,@date,@yue,@ri,@xingqi,@year
end
close point3
deallocate point3

execute sp_makewebtask
@outputfile=\'d:testdaylist.htm\',
@query=\'select * from ##daylist\',
@templatefile=\'d:testrili.tml\',
@codepage=936
drop table ##daylist
首先请读者通读上面的代码,以便对它有一个大概的了解。下面我们将对代码进行逐段的分析和讲解:
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1