快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

SQL SERVER静态页面导出技术3

静态页面导出实例分析:
下面讨论如何使用静态页面导出技术来实现我们在前面要求的各种功能。
首先,我们来看看要导出的页面文件的结构:
所有导出的页面都将被放在一个目录名为当日期的目录下。其中有两个非导出文件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
首先请读者通读上面的代码,以便对它有一个大概的了解。下面我们将对代码进行逐段的分析和讲解:
返回类别: 教程
上一教程: 在服务器上安装、使用MYSQL的注重事项
下一教程: 存储过程替换TEXT,NTEXT列中的字符串

您可以阅读与"SQL SERVER静态页面导出技术3"相关的教程:
· SQL SERVER静态页面导出技术1
· SQL SERVER静态页面导出技术4
· SQL SERVER静态页面导出技术2
· SQL Server的链接服务器技术小结
· SQL SERVER的链接服务器技术小结
    微笑服务 优质保证 索取样品