²¤¶
¦b³o¤ù¤å³¹¤¤¡A§Ú·|¥Ü½d¦p¦ó«Ø¥ß Web °ò¦ªº¦æ¨Æ¾ä¡C³o½g¤å³¹¹ï©ó¦b¸ê®ÆÅX°Êªººô¯¸¤¤ Active Server Pages (ASP)¡BStructured Query Language (SQL) »P and ActiveX Data Objects (ADO) ªº¶}µo·s¤â¡A´£¨Ñ¤@Ó¨}¦nªº¾ÉÄý¡C¹ï©ó¦³¸gÅ窺¶}µo¤Hû¡A§Ú¤]´£¨Ñ¤@¨Ç½Õ¾ã©Ê¤è±ªº¹ê¥Î«ØÄ³¡C
¹Ï 1 Web °ò¦ªº¦æ¨Æ¾ä
¤°»ò¬O Web °ò¦ªº¦æ¨Æ¾ä¡H
Web °ò¦ªº¦æ¨Æ¾äªñ¨Ó¤Q¤Àªº¬y¦æ¡C°_ªì¡A¨Ï¥ÎªÌ±N¦æ¨Æ¾ä¸m©óÓ¤Hªº¸ê°TºÞ²zµ{¦¡¤¤¡A¨Ò¦p Microsoft(R) Outlook(R)¡C³o¨Ç¦æ¨Æ¾äªº°ÝÃD¡A²³æªº»¡¡A¬O¥¦Ì¬Ò°w¹ïÓ¤H©Ê¦Ó³]pªº¡A«ÜÃø©M¨ä¥L¤H¤@°_¤À¨ÉÀ˵ø©Î¨Ï¥Î¡C²{¦b§ÚÌ»Ýnªº¤@ºØ¤è¦¡¡AÅý¨ä¥L¤H¤]¥i¥H¬Ý¨£±zªºÓ¤H¦æ¨Æ¾ä¡A©Î¬O¾Ö¦³¤@Ó³\¦h¤H¦@¥Îªº¤p²Õ¦æ¨Æ¾ä¡CÀHµÛºô»Úºô¸ôªºµo®i¡AÀH®ÉÀH¦a¨Ï¥Î Web °ò¦ªº¦æ¨Æ¾ä¤]Åܱo¥i¦æ¡C
±z¯à§Q¥Î Web °ò¦ªº¦æ¨Æ¾ä§@¤°»ò¡H
Web °ò¦ªº¦æ¨Æ¾ä¨Ï±z¯à©M¨ä¥L¤H¤À¨É±zªº¦æ¨Æ¾ä¡A©Î¬OÅý¤@¸s¤HºÞ²z¦æ¨Æ¾ä¡C¦pªG±z·Qn¨ä¥L¤H¦s¨ú±zªº¦æ¨Æ¾ä¡A¤À¨É¦æ¨Æ¾ä¬O«Ü¦³¥Îªº¡C´«¥y¸Ü»¡¡A¤p²Õ¦æ¨Æ¾ä¹ï©óÅã¥Ü¥Dnªº¦æ¨Æ¶µ¥Ø¬O¦³À°§Uªº¡A¨Ò¦pºI¤î¤é´Á©Î«¤j¨Æ¥ó¡A¦P®É¤]¥i¥HÅã¥Üµ¹¥¿¦b¥ð°²¤¤ªº¤H¡C
³o¸Ì²{¦sªºªF¦è
¦b§Úªº¿ì¤½«Ç¸ÌÀY¡A§Ú̦³¤@Ó intranet ºô¯¸¡A¦b¨º¸Ì¡A§Ú̦X¨Ö©Ò¦³»P§Ṳ́p²Õ¦³Ãöªº¸ê°T¡A¥]§t¥ð°²¦æ¨Æ¾ä¡B«¤j¨Æ¥ó¥H¤Î°²´Á¡C³o»Ýn«Ø¥ß¤@Ó²³æªº Web °ò¦ªº¦æ¨Æ¾ä¡AÅý¥ô¦ó¤H¥i¥HÀ˵ø¡B·s¼W¡B¥H¤Î/©Î¬O²¾°£¦æ¨Æ¶µ¥Ø (½Ð°Ñ¾\¹Ï 1)¡C
¦b³o½g¤å³¹¤¤¡A§Ú·|»¡©ú¦p¦ó¦b Microsoft Internet Information ªA°È (IIS) »P Microsoft SQL Server ¤¤¡A¨Ï¥Î ASP ºô¶«Ø¥ß¤@Ó«D±`²³æ Web °ò¦ªº¦æ¨Æ¾ä¡C¦b³o½g¤å³¹ªºµ²½×¤¤¡A§Ú·|°Q½×·í½Õ¾ãÀ³¥Îµ{¦¡µ¹§ó¦h¨Ï¥ÎªÌ®É¡A®Ä¯àªº²o³s¬O¥²¶·¦Ò¶qªº¡C¹ï©óè¶i¤J IIS »P ASP ªº¤H¡A³o½g¤å³¹¥i¥H·í¦¨«Ø¥ß¸ê®ÆÅX°Êºô¯¸ªº¨}¦n¾ÉÄý¡C
SQL «áºÝ
nÀx¦s¤°»ò¸ê®Æ¡H
²Ä¤@Ó°ÝÃD¬O¡A¨CÓ¤é´ÁnÀx¦s¤°»òÃþ«¬¸ê®Æ¡H¹ï§Úªº¦æ¨Æ¾ä¦Ó¨¥¡A§Ú¥u»Ýn²³æªºÀx¦s¼Ð¥Ü¦æ¨Æ©Ê½èªº 100 ¦r¤¸ªøªº¤å¦r¦r¦ê¡C¨CÓ¤H³£¥i¥H»´©öªº©µ¦ù¸ê®Æ¼Ò«¬¡A¥H¥]§t§ó¦hªº¤å¦r¦r¦ê¡C
»yªk
Calendar.sql
SQL µ{¦¡½X¥]§t¤U¦Cªº¤ù¬qµ{¦¡½X¡G
------- ¸ê®Æªí--------------
create table Schedule
(
idSchedule smallint identity primary key,
dtDate smalldatetime not null,
vcEvent varchar(100) not null
)
go
----------------- ¹w¦sµ{§Ç--------------------------
create procedure GetSchedule (@nMonth tinyint, @nYear smallint)
as
select idSchedule, convert(varchar, datepart(dd, dtDate)) 'nDay', vcEvent
from Schedule
where datepart(yy, dtDate) = @nYear and datepart(mm, dtDate) = @nMonth
order by datepart(dd, dtDate)
go
create procedure AddEvent (@vcDate varchar(20), @vcEvent varchar(100))
as
insert Schedule
select @vcDate, @vcEvent
go
create procedure DeleteEvent (@idSchedule smallint)
as
delete Schedule where idSchedule = @idSchedule
go
¹ï©ó§Úªº±Æµ{ªí¡A§Ú¨Ï¥Î¤@Ó¿ëÃÑÁä (¦Û°Ê¼W¥[)¡A§@¬°¥DnÁä¡A©Ò¥H§Ú¤£»Ýn¦Û¤v«Ø¥ß¤@Ӱߤ@ªºÁä¡C §Ú¿ï¾Ü smallint µ¹ idSchedule ¨Ï¥Î¡A¦]¬°¹ï©ó§Úªº»Ý¨D¡A§Ú±q¨Ó¨S¦³´Á±æ¾Ö¦³¶W¹L 32,000 Ó¤£¦Pªº¦æ¨Æ¶µ¥Ø¡C¹ï©ó¤@Ó¤ñ¸û¤j³W¼ÒªºÀ³¥Îµ{¦¡¡A§A¥i¯à¤ñ¸û·Qn¨Ï¥Î¤@Óªø¾ã¼Æ¨Ó´£¨Ñ§A 20 »õµ§ªº°O¿ý¡C§Ú±N³oÓ¸ê®ÆÀx¦s¬° smalldatetime¡A¥H¸`¬ÙªÅ¶¡¡A¦]¬°§Ú¤£»Ýn°O¿ý¨ì¬í¼Æ¦ì¡C¤@Ó¥¿±` datetime ·|°O¿ý¨ì¸U¤À¤§¤@¬í¡A¤ñ°_¥¿½T²v¨ì¤Àªº smalldatetime¡A¨ä¦h¦û¤F¤@¿ªºªÅ¶¡¡C³W¼Ò¸û¤jªºÀ³¥Îµ{¦¡¤]³\»ÝnÀˬd¨ä¥L¤èªk¡A§Q¥Î§ó¤ÖªºªÅ¶¡¨Ó°O¿ý¤é´Á (¨Ò¦p¡A¦b¸g¹L¯S©wªº¤é´Á«á¡A´N¥X²{¾ã¼ÆÅã¥Ü¤Ñ¼Æ¡A¨Ò¦p 1970 ¦~ 1 ¤ë 1 ¤é)¡C
¹ï©ó§Úªº¸ê®Æ¡A§Ú¨Ï¥Î¤@Ó¤£¦Pªø«×ªº¦r¤¸¦r¦ê (varchar)¡A°ª¹F 100 Ó¦r¤¸¡C ¦b SQL Server 7.0 ¤¤¡A§A¥i¥H¨Ï¥Î¤@Ó nvarchar¡A¨º¥i¥H¨Ï¥Î Unicode ¦r¤¸¡A¨Ï§AªºÀ³¥Îµ{¦¡¥i¥H¥þ²y©Êªº¨Ï¥Î¡C¦ý¬O¡A³o¸Ì¦³¬°¤F°ê»Ú¨Ï¥ÎªÌ«Ø¥ßºô¸ô¶±ªº°ÝÃD¡A³o¶W¹L¤F§Ú̲{¦b³o¸Ì°Q½×ªº½d³ò¡C
¹w¦sµ{§Ç
¤@Ó¦³Ãö SQL ¹w¦sµ{§ÇªººK°O¡G¦b ASP µ{¦¡½X¤W¡A¹w¦sµ{§Ç¤ñª½±µ¼¶¼g SQL ÁÙ¦n¡A¦Óì¦]¦³¤G¡C²Ä¤@¡A±N¸ê®Æ¦s¨úµ{¦¡½X±q±Ôzµ{¦¡½X¤À¥X¡A½T©w¸ê®Æªº¿W¥ß©Ê¡C³oÅý§A¥i¥H§ïÅÜ¸ê®Æªº¬[ºc (¥H¤Î¥¦¦ñÀHªº¹w¦sµ{§Ç¡A¨Ã¥B¤£¥Î§ïÅÜ ASP ¶±¡C³o¬O¨å«¬ªº Microsoft Windows DNA n-tier ¬[ºc¡C²Ä¤GÓ¬°¤°»ò¹w¦sµ{§Ç¤ñ¸û¦nªºì¦]¬O¡A¥¦Ì¤ñ¤å¦r°Ñ¼Æ°õ¦æ±o§Ö¡A¦]¬°·í¥¦Ì³Q©I¥s®É¡A¥¦Ì´N·|¥ý³Q¤ÀªR¡C¦]¦¹¡A«á¨Óªº©I¥s´N¤£¥Î¦A¦¸¤ÀªR³oÓµ{§Ç¡C
§Ú»Ýn¤TÓ¹w¦sµ{§Ç¨Ó¦b³oÓªí¤W¦s¨ú©M³B²z¸ê®Æ¡FGetSchedule¡BAddEvent ©M DeleteEvent¡C
¹ï©ó GetScheduleµ{§Ç¡A§Ú¦b¤ë©M¦~¶Ç»¼§Ú·Qn¦^ªº¸ê®Æ¡CµM«á¡A§Ú¨Ï¥Î Datepart() ¥\¯à¨Ó¨ú±o¦æ¨Æ¶µ¥Øªº¤é¤l¼Æ¡CµM«á¡A§Ú±N¨Ï¥Î³oӼƦr¨Ó©M§Ú«Ø¥ßªº¦æ¨Æ¾äªº¤é¤l°t¦X¡C§ÚÌ·|¦b«á±¬Ý¨ì¡A¨C¤Ñ±Æ¦Cµ²ªG¬O«Ü«nªº¡C
AddEvent µ{§Ç´N¬O²³æªº¼W¥[¤@Ó¤å¦r¦æ¨Æ¶µ¥Ø¨ì¤@Óµ¹¥Xªº¸ê®Æ¤W¡C§Ú¨Ã¤£¾á¤ß½Æ»s¦æ¨Æ¶µ¥Ø¡A¦]¬°©Ò¦³ªº¦æ¨Æ¶µ¥Ø³£¥Î¦³¤@Ó¿W¯Sªº±Æµ{ ID¡C
¿W¯Sªº±Æµ{ ID ¬O±q±Æµ{¤¤²¾°£¤@Ó¦æ¨Æ¶µ¥Ø°ß¤@»Ýnªº¡C¶Ç»¼³oÓ¨ì DeleteEvent µ{§Ç²¾°£³oÓ¦æ¨Æ¶µ¥Ø¡C
ASP «eºÝ
°ò¥»ªº UI
¡@¡@¹Ï 1 Åã¥Ü¥Dnªº¨Ï¥ÎªÌ¤¶± (UI)¡C UI ªº¦w¸Ë¹³¬O¤@Ó®à±¦æ¨Æ¾ä¡C§Úªº¤@Ó¬P´Á±q¬P´Á¤é¶}©l¨Ã¥B¥]§t 7 ¤Ñ¡C¬°¤F²³æ¡A§Ú¥²¶·Á×§K°õ¦æ¦Y«ªº®æ¦¡¡A¦ý¬O¨Ï¥Î¼Ë¦¡ªí¨Ó»s³y³oÓ¦æ¨Æ¾ä¡AÅý¥¦¬Ý°_¨Ó§ó±M·~´N®e©öªº¦h¡C±q³oÓ¥Dn¶±¡A¨Ï¥ÎªÌ¥i¥H¬Ý¨ìþ¤@Ó¦æ¨Æ¶µ¥Ø¤w¸g¦b¦æ¨Æ¾ä¤W¡C¦Ó¥B¡C¥¦Ì¥i¥H¦b¦æ¨Æ¾äªº¤ë¥÷¤W©¹«e©M©¹«á²¾¡A¥un¨Ï¥Î¦b¶©³ªº³sµ²¡A©Î¬O¿ï¾Ü¤@Ó¯S©wªº¤ë¥÷©M¦~¥÷¡A¥un¨Ï¥Î¦b¶±¥ª¤W¨¤ªº¤U©Ô®Ø¡C³sµ²¼W¥[/²¾°£¦æ¨Æ¶µ¥Øªº¶±¬O¦b¦æ¨Æ¾äªº¥¿¤U±¡C
ASP µ{¦¡½X°ò¦
header.asp
<%@ LANGUAGE="VBSCRIPT"
ENABLESESSIONSTATE = False %>
<%
'**************************************
' ¦WºÙ¡G header.asp
'
' ¥Øªº¡GªíÀY¥]§t±Ò°Ê©Ò¦³¶±ªºÀÉ®×
' ¤]¥]§tÁ`Åé¨ç¼Æ
'
'********************************************************************
Option Explicit
Response.Buffer = True
Response.Expires = 0
sub Doheader(strTitle)
%>
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
<title>Event Calendar - <%= strTitle %></title>
</head>
<body bgcolor="white" link="blue" alink="blue" vlink="blue">
<basefont face="Verdana, Arial">
<center><h1>Event Calendar</h1>
<h3><%= strTitle %></h3>
<%
end sub
sub DoFooter(strTitle)
%>
</center>
</body></html>
<%
end sub
function GetDataConnection()
dim oConn, strConn
Set oConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=SQLOLEDB; Data Source=adspm; Initial Catalog=TeamWeb; "
strConn = strConn & "User Id=TeamWeb; Password=x"
oConn.Open strConn
set GetDataConnection = oConn
end function
%>
·í§Ú¨Ï¥Î ASP ¼¶¼g¤@Óºô¯¸¡A§Ú³ßÅw¹ï¾ãÓºô¸ô¨Ï¥Î¤@Ó³æ¤@ªíÀY¶±¡C³oÅý§Ú¥i¥H¦b¨C¤@¶¤W©ñ¬Û¦Pªº¨Ï¥Î¥\¯à¡B¼Ë¦¡ ¡AMicrosoft JScript µ¥µ¥¡C¹ï©ó³oÓºô¯¸¡A§Ú¥²¶·¦w¸Ë¤@ÓªíÀY¶± (½Ð°Ñ¦Ò³B²z½Xªº½d¨Ò)¡A¦b¾ãÓºô¯¸¤W¦w¸Ë¬Û¦Pªº ASP ¸Ë¸m¡A¨Ã¥B¥]§t¤TÓ§Ú¦b©Ò¦³¨ä¥L¶±¤W¨Ï¥Îªº¥\¯à¡G¤@Ó HTML ªíÀY©Mªí§À¡A¥H¤Î§Úªº¸ê®Æ³sµ²µ{¦¡½X¡C
§Ú³Ì¥ý°µªº¨Æ¬O¦w¸Ë»y¨¥¨ì Microsoft Visual Basic Scripting Edition (VBScript) ©M°±¤î¶¥¬q§@·~ª¬ºA¡C¦w¸Ë»y¨¥¨Ã¤£¬Oµ´¹ï»Ýn¡A¦ý«o¬O¤@Ó¦n¥D·N¡C¨Ã¥B¡A³oÓºô¯¸¤£¥ÎASP ¶¥¬q§@·~ª¬ºA¡A¨º´N¬O§Úª½±µºÙ¬°ªº IIS¡A¦]¦¹¡A®Ä¯à§Ö³tªº¶i¨B¡C§Ú¨ä¥L¼¶¼g²ßºD¬O¥Î¨Ó³]©w Option Explicit (·N«ä¬O§Ú¥²¶·¦b¨Ï¥Î¥¦Ì«e dim ÅܼÆ)¡A½w½Ä¿é¥X (IIS ±N·|«O¯d¿é¥X¡AµM«á¤@¦¸©ñ¥X¡A¥¦¼W¶iªº¥\¯à)¡A¨Ã¥B¥ß§Y³]¥ß³oÓ¶±¬°¹L´Áªº (¦]¦¹¡A¨Ï¥ÎªÌ±N¥Ã»·±o¨ì³Ì·s¶±)¡C
§Ú¨Ï¥Î Doheader ¥\¯à³B²z©Ò¦³§Úªº HTML ªíÀYµ{¦¡½X¡C§Ú¶Ç»¼¶±ªº¦WºÙ¡A¦P®ÉÅã¥Ü¦b HTML ¼ÐÃD©M H3 ¼ÐÅÒ¦b¶±ªº³Ì¤W±¡C³oÅý§Ú¦³¤@Ó³æ¤@ªº¦a¤è¨Ó½sĶHTML BODY ÄݩʡB¼Ë¦¡µ¥¡C¬Û¦ü©ó Doheader ¥\¯à¡C§Ú·Qn¾Ö¦³¤@Óªí§À¥\¯à¡A¸U¤@§Ú»Ýn¼W¥[¤@Ó´¶³qªº (³sµ²¸ê°Tµ¥)¡C
ADO Åý§Úªº ASP ¶±«Ü®e©öªº³sµ² SQL ¸ê®Æ®w¡Cº¥ý¡A§Ú«Ø¥ß¤@Ó³s½u¨ì¸ê®Æ®w¡C¬°¤FÀò±o recordset ¡A§Ú©I¥s Execute ¼Ò¦¡¡A¦b Connection ª«¥ó¶Ç»¼§Ú§Æ±æ°õ¦æªº¤å¦r¦r¦ê©R¥O¡C¤@¥¹§Ú¾Ö¦³¤F recordset¡A§Ú¥i¥HÀô¶¥¦¡Cheader.asp ¥]§t¤FÀò±o¸ê®Æ³s½uªº¥\¯à¡C³oªí¥Ü§Ú¥u»Ýn¦b¤@Ó¦a¤è½sͳs½u¸ê°T (¦øªA¾¹¡B¨Ï¥ÎªÌ¡B±K½X) ¦pªG§Úªº¸ê®Æ¨Ó·½§ïÅÜ¡Cª`·N¡A¥\¯àªº³Ì«á¡A§Ú¥²¶·¨Ï¥Î set ©R¥O¨Ó¶Ç»¼¥X·sªº³s½u§@¬°µ²ªG¡C
¦p¦ó¹B§@
Calendar.asp
<!--#includes file="header.asp"-->
<%
'********************************************************************
' ¦WºÙ¡GCalendar.asp
'
' ¥Øªº¡G¥Î¦æ¨Æ¾ä®æ¦¡Åã¥Ü¦æ¨Æ¶µ¥Øªº¥Dn¦æ¨Æ¾ä¶
'
'********************************************************************
dim dbConn, rs, nDex, nMonth, nYear, dtDate
' ¨ú±o²{¦bªº¤é´Á
dtDate = Now()
' ³]©w¤ë¥÷©M¦~¥÷
nMonth = Request.QueryString("nMonth")
nYear = Request.QueryString("nYear")
if nMonth = "" then nMonth = Month(dtDate)
if nYear = "" then nYear = Year(dtDate)
' ³]©w¤é´Á¨ì²{¦b²Ä¤@Ó¤ë¥÷
dtDate = DateSerial(nYear, nMonth, 1)
Set dbConn = GetDataConnection
Set rs = dbConn.Execute ("GetSchedule " & nMonth & ", " & nYear)
Doheader(MonthName(Month(dtDate)) & " " & nYear)
%>
<form method="get" name="DateSelect" action="Calendar.asp">
<table width=700>
<tr><td colspan=2><select name="nMonth" onChange="DateSelect.submit();"><%
for nDex = 1 to 12
Response.Write "<option value=""" & nDex & """"
if MonthName(nDex) = MonthName(nMonth) then
Response.Write " selected"
end if
Response.Write ">" & MonthName(nDex)
next %></select>
<select name="nYear" onChange="DateSelect.submit();"><%
' Note: I have set the year to be between 1999 and 2000
for nDex = 1999 to 2002
Response.Write "<option value=""" & nDex & """"
if nDex = CInt(nYear) then Response.Write " selected"
Response.Write ">" & nDex
next %></select></td></tr>
<tr><td colspan=2>
<table border=1 bgcolor="gray" cellpadding=3>
<tr bgcolor="Blue"><td width=90><font color="white">Sunday</font></td>
<td width=90><font color="white">Monday</font></td>
<td width=90><font color="white">Tuesday</font></td>
<td width=90><font color="white">Wednesday</font></td>
<td width=90><font color="white">Thursday</font></td>
<td width=90><font color="white">Friday</font></td>
<td width=90><font color="white">Saturday</font></td></tr>
<tr bgcolor="#ffffc0">
<%
' ¼W¥[ªÅ¥ÕÄæ¦ì¡Aª½¨ì¥¿½Tªº¤Ñ¼Æ
for nDex = 1 to Weekday(dtDate) - 1
Response.Write "<td bgcolor=""#c0c0c0""> </td>"
next
do
Response.Write "<td valign=""top"">" & Day(dtDate) & "<br> <br>"
if not rs.EOF then
do
if CInt(rs("nDay")) <> CInt(Day(dtDate)) then exit do
Response.Write "<font size=""-1"">" & rs("vcEvent")
Response.Write "</font><br>"
rs.MoveNext
if rs.EOF then exit do
loop
end if
Response.Write "</td>"
if WeekDay(dtDate) = 7 then
Response.Write "</tr>" & vbCrLf & "<tr bgcolor=""#ffffc0"">"
end if
dtDate = DateAdd("d", 1, dtDate)
loop until (Month(dtDate) <> CInt(nMonth))
' ·s¼WªÅ¥ÕÄæ¦ì¨Ó¶ñº¡¨ä¥L»Ýnªº¤ë¥÷
if Weekday(dtDate) <> 1 then
for nDex = Weekday(dtDate) to 7
Response.Write "<td bgcolor=""#C0C0C0""> </td>"
next
end if
%>
</tr>
</table></td></tr>
<tr><td colspan=2 align="center"><a
href="Events.asp?nMonth=<%= nMonth %>&nYear=<%= nYear %>"
>Add/Remove Events</a></td></tr>
<tr><td><a href="Calendar.asp?nMonth=<%
if nMonth = 1 then
Response.Write "12&nYear=" & nYear - 1
else
Response.Write nMonth - 1 & "&nYear=" & nYear
end if %>"><b><- Previous Month</a></td>
<td align=right><a href="Calendar.asp?nMonth=<%
if nMonth = 12 then
Response.Write "1&nYear=" & nYear + 1
else
Response.Write nMonth + 1 & "&nYear=" & nYear
end if %>">Next Month - ></a>
</td>
</tr>
</table>
</form>
<%
DoFooter("Home")
%>
³oÓ±M®×³Ì¦³¬D¾Ôªº³¡¤À¬O«Ø¥ß¤@Ó¥¿½Tªº HTML ¦æ¨Æ¾ä¡C¦³«Ü¦h»Ýn¨M©wªººtºâªk¡A©Î¬O¡A¨Ò¦p¡A¨C¤@Ӥ릳¦h¤Ö¤Ñ¡A¤µ¦~¬O¤£¬O¶|¦~µ¥¡C»P¨ä±qÀY¨ì§Àªº°µ¡A§Ú¨Ï¥Î¦b Visual Basic ¤¤ªº date ª«¥ó¡A¨Ó«Ø¥ß§Úªº¦æ¨Æ¾ä¡C
¬°¤F³]p¬YÓ¤ë¥÷ªº¦æ¨Æ¾ä¡Aº¥ý§Ú«Ø¥ß¤@Ó date ª«¥ó¡A¬°¤F¨ºÓ¤ë¥÷©Î¦~¥÷ªº²Ä¤@¤Ñ¡CµM«á¡A§Ú²³æªº¨Ï¥Î DateAdd() ¥\¯à¨Ó¼W¥[¤@¤Ñ¡CµM«á¡A§Ú¥i¥H¨Ï¥Î¤º«Øªº¤èªk¨ÓÅã¥Ü³o¬O¬P´Á´X¡A¥H¤Î³oӤ뵲§ôªº¤é´Á¡C§Ú¤]¥i¥Hª¾¹D³oӤ몺¤Ñ¼Æ¡A¨Ã¥B¨Ï¥Î¥¦¦b§Ú±Æµ{ªº¸ê°T¤W¡C³oÅý§Ú¥i¥H«Ø¥ß¤@ÓÅã¥Ü¦æ¨Æ¾äªºªí®æ¡C
¦æ¨Æ¾ä¶±¨Ï¥Î¶Ç»¼¦b¬d¸ß¦r¦êªº¤é´Á©M¦~¥÷¡C¦pªG¨S¦³¥ô¦óªº¤é´Á©Î¦~¥÷¶Ç¤J¡A´N·|¨Ï¥Î¥Ø«eªº¤é´Á©M¦~¥÷¡C
³o¨Ï±o«Ø¥ß¥i¥H¦b¤ë¥÷¶¡²¾°Êªº UI Åܪº«Ü®e©ö¡C¥i¥H«Ø¥ß¦^¨ì¬YÓ¤ë¥÷ªº³sµ²¡A§Q¥Î©I¥s Calendar.asp ©M´£¨Ñ¤@Ó«ü©w«e¤@Ó¤ë¥÷ªº¬d¸ß¦r¦ê (¨Ã¥B´î¤Ö¤@Ó¦~¥÷¡A¦pªG§Ú̬O¦b¤@¤ë)¡C©¹«e²¾¤@Ó¤ë«Ü²³æ (º¥ý¡A¥ý¬d¬Ý¬O¤£¬O¦b¤Q¤G¤ë)¡C²¾°Ê¨ì¤@Ó¯S©wªº¤ë¥÷©M¦~¥÷¤]¤ñ¸û²³æ¡C§ÚÌ¥u»Ýn¦w¸Ë¤@Ó Calendar.asp ®æ¦¡¬°¤@ӥؼСA¸Ë¤@¨Ç¤U©Ô®Ø¡A¥Î§ÚÌ·Qn²[»\ªº¤ë¥÷©M¦~¥÷¡A¬°¤F¤U©Ôªí³æ¡AµM«áªþ¥[¤@ӳ̳»ºÝªº¨Æ¨£¨ì onChange() ¦æ¨Æ¶µ¥Ø¡C³o¨Ï±o¶±¥i¥H¦Û°Êªº§ó·s¡A·í¨Ï¥ÎªÌ¿ï¾Ü¤F¤@Ó·sªº¤ë¥÷©Î¦~¥÷¡Cª`·N¨ì§Ú¦p¦ó¨Ï¥Î MonthName() ¥\¯àªí¨Ó±Æ¦C¥X¤ë¥÷¡C
Åã¥Ü¦æ¨Æ¶µ¥Ø¬O«Ü²³æªº¡Cº¥ý¡A§Ú¥Î ADO ¨Ó³sµ² SQL ¸ê®Æ®w¡AÅã¥Ü¥X¯S©w¤ë¥÷ªº¦æ¨Æ¶µ¥Ø¡C©I¥s GetSchedule ¹w¦sµ{§Ç¡A¨Ã¶Ç»¼°Ý¸¹¨ì¤ë¥÷©M¦~¥÷¡C³oÅý§Ú¨Ï¥Î¤@Ó¥]§t¤F¦æ¨Æ¶µ¥Øªºªí³æ recordset¡A³æ¿WÀHµÛ¥¦Ìªºµo¥Í¤é (¥Î¤é¨ÓÀx¦s)¡C
²{¦b¡A·í§Ú«Ø¥ß¦æ¨Æ¾ä®É¡A¥unÅã¥Ü¦æ¨Æ¶µ¥Øµo¥Íªº¤é´Á©M¤º®e§Y¥i¡C§Ú¥i¥H³o¼Ë°µ¬O¦]¬°§Úª¾¹D¦æ¨Æ¶µ¥Ø¥H¤Ñ¨Ó§@¬°Àx¦s³æ¦ì¡C
¹Ï 2 ·s¼W/²¾°£¦æ¨Æ¶µ¥Ø¶
·s¼W/²¾°£¦æ¨Æ¶µ¥Ø¶¤¹³\¨Ï¥ÎªÌ·s¼W¨Æ¥ó¶µ¥Ø©Î²¾°£²{¦sªº¦æ¨Æ¶µ¥Ø¡Cn¦s¨ú¶±¡Aº¥ý±N¦æ¨Æ¾ä²¾°Ê¨ì¥¿½Tªº¤ë¥÷¶¡AµM«á«ö·s¼W/²¾°£¦æ¨Æ¶µ¥Øªº³sµ²¡C³oÓ³sµ²ªº«Ø¥ß¥]§t¬d¸ßn·s¼W/²¾°£¦æ¨Æ¶µ¥Øªº¤ë»P¦~¤§¦r¦ê¡C
¨Ï¥Î»P Calendar.asp ¬Û¦Pªº GetSchedule ¹w¦sµ{§Ç¡A·|²£¥Í¤ë¥÷¤¤¥Ø«eªº¦æ¨Æ¶µ¥Ø¦Cªí¡C²{¦b¡A§ÚÌ¥u»Ýn´`Àô¸ê®Æ¿ý¶°¡A´N¥iÅã¥Ü¤ë¥÷¤¤©Ò¦³ªº¦æ¨Æ¶µ¥Ø¡C
Events.asp
<!--#includes file="header.asp"-->
<%
'********************************************************************
' ¦WºÙ¡GEvents.asp
'
' ¥Øªº¡G¥Î¨Ó±q¦æ¨Æ¶µ¥Ø¸ê®Æ®w¤¤·s¼W»P²¾°£¦æ¨Æ¶µ¥Ø¡C
'
'********************************************************************
dim dbConn, rs, nDex, nMonth, nYear, dtDate, dtTemp
' ¨ú±o²{¦bªº¤é´Á
dtDate = Now()
' ³]©w¤ë¥÷»P¦~¥÷
nMonth = Request("nMonth")
nYear = Request("nYear")
if nMonth = "" then nMonth = Month(dtDate)
if nYear = "" then nYear = Year(dtDate)
Set dbConn = GetDataConnection
Set rs = dbConn.Execute ("GetSchedule " & nMonth & ", " & nYear)
Doheader("Add/Remove Events")
%>
<form method="get" action="AddEvent.asp">
<br>Currently Scheduled Events for <%
Response.Write MonthName(nMonth) & " " & nYear
%>:<p>
<table bgcolor="gray" border=1 cellpadding=3>
<tr bgcolor="Blue"><td><font color="white">Day</font></td>
<td colspan=2><font color="white">Event</font></td></tr>
<% if rs.EOF then
Response.Write "<tr><td colspan=3 bgcolor=""#ffffc0"">No events listed</td></tr>"
end if
while not rs.EOF
Response.Write "<tr bgcolor=""#ffffc0""><td>" & rs("nDay") & "</td><td>"
Response.Write rs("vcEvent") & "</td><td><input type=""button"" value=""Remove"""
Response.Write " onClick=""window.location.href='RemoveEvent.asp?nMonth=" & nMonth
Response.Write "&nYear=" & nYear & "&idSchedule=" & rs("idSchedule") & "'""></td></tr>"
rs.MoveNext
wend
%></table>
<p><br>
<table bgcolor="gray" border=1 cellpadding=3>
<tr bgcolor="Blue"><td><font color="white">Add New Event:</font></td></tr>
<tr bgcolor="#ffffc0"><td>Event:
<input type="text" size=30 maxlength=100 name="Event"> Day: <select name="nDay"><%
' ³]©w¤é´Á¨ì²{¦b²Ä¤@Ó¤ë¥÷
dtDate = DateSerial(nYear, nMonth, 1)
dtTemp = dtDate
do
Response.Write "<option value=""" & Day(dtTemp) & """>" & Day(dtTemp)
dtTemp = DateAdd("d", 1, dtTemp)
loop until (Month(dtTemp) <> CInt(nMonth)) %></select>
<input type="hidden" name="nMonth" value="<%= nMonth %>">
<input type="hidden" name="nYear" value="<%= nYear %>">
<input type="Submit" value="Add Event"></td></tr>
</table>
</form>
<p><a href="Calendar.asp?nMonth=<%= nMonth %>&nYear=<%= nYear %>">Back to Calendar</a>
<%
DoFooter("Home")
%>
n¼W¥[·s¦æ¨Æ¶µ¥Ø¡A¨Ï¥ÎªÌ²³æªº¿é¤J·Qnªº¦æ¨Æ¶µ¥ØÃþ«¬¨ìªí³æ¤¤¡AµM«á«ö [½T©w] «ö¶s¡C¨Ï¥Î maxlength ÄݩʡA¨îªí³æ¤¸¯À¬° 100 Ó¦r¤¸¡A¥H°t¦X±Æµ{ªí¤¤ªº¦æ¨Æ¶µ¥ØÄæ¦ì¡C
n²¾°£¦æ¨Æ¶µ¥Ø¡A¨Ï¥ÎªÌ«ö¤Un²¾°£¦æ¨Æ¶µ¥Ø®ÇÃ䪺«ö¶s¡C³oÓ«ö¶s·|©I¥s RemoveEvent.asp¡A¶Ç»¼¦æ¨Æ¶µ¥Øªº idSchedule ¥H¤Î²{¦bªº¤ë¥÷»P¦~¥÷¡A©Ò¥H¥i¥H«Ø³sµ²¦^¨ì Events.asp¡C
AddEvent.asp
<!--#includes file="header.asp"-->
<%
'********************************************************************
' ¦WºÙ¡GAddEvent.asp
'
' ¥Øªº¡G¥Î¨Ó·s¼W¦æ¨Æ¶µ¥Ø¨ì¦æ¨Æ¶µ¥Ø¸ê®Æ®w¡C
'
'********************************************************************
dim dbConn, strSQL
Set dbConn = GetDataConnection
strSQL = "AddEvent '" & Request("nMonth") & "/" & Request("nDay")
strSQL = strSQL & "/" & Request("nYear") & "', '"
strSQL = strSQL & Replace(Request("Event"), "'", "''") & "'"
dbConn.Execute (strSQL)
Response.Redirect("Events.asp?nMonth=" & Request("nMonth") & "&nYear=" & Request("nYear"))
%>
AddEvent.asp ¶±¨ú±o¶Ç»¼ªí³æªº¸ê°T¡AµM«á¨Ï¥Î AddEvent ¹w¦sµ{§Ç¡A´¡¤J¸ê®Æ®w¤¤¡CµM«á¶±«·s¾É¦^·s¼W/²¾°£¦æ¨Æ¶µ¥Ø¶¤¤¡A¨Ï¥Î¥i¥H¥ß§Y¬Ý¨ì·sªº¦æ¨Æ¶µ¥Ø¡C½Ðª`·N§Ú¦p¦ó¨Ï¥Î Replace() ¥\¯à¨Ó±N³æ¤Þ¸¹ (') Åܧó¬°Âù¤Þ¸¹ ('')¡ASQL ·|¸ÑªR³æ¤Þ¸¹¡C¦pªG±z¨S¦³³o¼Ë°µ¡A·í¨Ï¥ÎªÌ¹Á¸Õ¿é¤J¹³¬O¡u“All Saint’s Day¡v³o¼Ëªº¦æ¨Æ¶µ¥Ø®É¡A·|±o¨ì¿ù»~¡C
RemoveEvent.asp
<!--#includes file="header.asp"-->
<%
'********************************************************************
' ¦WºÙ¡GRemoveEvent.asp
'
' ¥Øªº¡G¥Î¨Ó±q¦æ¨Æ¶µ¥Ø¸ê®Æ®w¤¤²¾°£¦æ¨Æ¶µ¥Ø¡C
'
'********************************************************************
dim dbConn
Set dbConn = GetDataConnection
dbConn.Execute ("DeleteEvent " & Request("idSchedule") )
Response.Redirect("Events.asp?nMonth=" & Request("nMonth") & "&nYear=" & Request("nYear"))
%>
RemoveEvent.asp ¶±¨Ï¥Î DeleteEvent ¹w¦sµ{§Ç¨Ó²¾°£µ¹©wªº¦æ¨Æ¶µ¥Ø ID¡AµM«á¥ß§Y¶Ç°eµ¹¨Ï¥ÎªÌ¡A¦^¨ì¦æ¨Æ¶µ¥Ø¶±¤¤¡C
®Ä¯àijÃD
½Õ¾ã©Ê
¡@¡@ASP º}«Gªº¦a¤è¬O¡A¥¦¨Ï±o«Ø¥ßºô¶§ó¥[ªº®e©ö¡CµM¦Ó¡A¦pªG±z·Q«Ø¥ß¤@Ó¯à®e³\¦h¨Ï¥ÎªÌªººô¯¸¡A«h»Ýn¤p¤ß¦a¼¶¼gµ{¦¡¡C¦b³oÓ³¹¸`¤¤¡A§Ú·|°Q½×¤£¦Pªº¼W¥[¦¹ Web °ò¦¦æ¨Æ¾ä½Õ¾ã©Êªº¤èªk¡CÁöµM¬O¥H³oÓÀ³¥Îµ{¦¡¬°¨Ò¡A§Ú©Ò±Ôzªº¤èªk¥i¥H¦b¥ô¦ó ASP ºô¯¸¤¤¼W¥[®Ä¯à¡C
SQL ³Ì¨Î¤Æ
¡@¡@n¼W¶iºô¯¸ªº®Ä¯à¡A²³æªº¤èªk¬O¼W¥[±Æµ{ªí¤¤Äæ¦ìªº¯Á¤Þ¡C³o¼Ë·|¥[³t GetEvents ¹w¦sµ{¦¡¡A¦]¬°¥¦·|¦bµ¹©wªº¸ê®Æ¤¤·j´M¦æ¨Æ¶µ¥Ø¡C
¹ï©ó¤p«¬ºô¯¸¡ASQL ¥i¥H¦w¸Ë¹³¬O IIS ªº¦øªA¾¹¤W¡C¤@¥¹ºô¯¸¶}©l¦¨ªø¡A±z·|§Æ±æ±N SQL ²¾©¹¦Û¤vªº¦øªA¾¹¤¤¡C·í¦øªA«ùÄòªº¦¨ªø¡A±z·|§Æ±æ¼W¥[¼Æ³¡ IS ¦øªA¾¹¡A¥þ³¡«ü¦V¬Û¦Pªº SQL ¦øªA¾¹¡C¦pªG SQL ªº¬y¶q·¥«×ªº¦¨ªø¡A±z·|±N¸ê®Æ¤Á³Î¨ì¤£¦Pªº¦øªA¾¹¡C±z¥i¯à§Æ±æ±N³æ¼Æªº¤ë¥÷©ñ¨ì¤@³¡¦øªA¾¹¡A¦ÓÂù¼Æªº¤ë¥÷©ñ¨ì¥t¤@³¡¡C·íµM¡A±z¥i¥H×§ï¦b header.asp ¤¤ªº GetDataConnection¡AÅý¥¦®Ú¾Ú¤ë¥÷µ¹©w¥¿½Tªº³s½u¡C
ASP ³Ì¨Î¤Æ
¡@¡@ASP Âà´«ªº¥Dn³Ì¨Î¤Æ¬O§Ö¨ú¶±¡AÅý¥¦Ì¤£¥Î¨C¦¸³£nÂà´«¡Cn³o¼Ë°µ¡A³Ì²³æªº¤èªk¬O³z¹L ASP Application ª«¥ó¡C±z¥i¥H«Ø³æªºÀx¦s HTML ¨ì¦³¤ë¥÷»P¦~¥÷ªºÀ³¥Îµ{¦¡ÅܼƤ¤ (¨Ò¦p¡ACalendar07-2000)¡CµM«á¡AÅã¥Ü¦æ¨Æ¾ä¶±®É¡Cº¥ýÀˬd¦æ¨Æ¾ä¬O§_¤w¸gÀx¦s¦bÀ³¥Îµ{¦¡ÅܼƤ¤¡A¦pªG¦³¡A²³æªºÂ^¨ú¥¦¡C³o¼Ë·|Àx¦s¸ô®|¨ì SQL ®Ø®æ¤¤¡A©³¤U¬O¤@¨ÇµêÀÀµ{¦¡½X¡AÅã¥Ü¥¦¦p¦ó¹B§@¡G
<<do header>>
ShowCalendar(nMonth, nYear)
<<do Footer>>
sub ShowCalendar(nMonth, nYear)
if Application(“Calendar?& nMonth & ??& nYear) = ? then
<<Build Calendar>>
Application(“Calendar?& nMonth & ??& nYear) = <<Calendar>>
End if
Response.Write Application(“Calendar?& nMonth & ??& nYear)
End sub
·íµM¡A·í Events.asp ¶±Åܧó¤ë¥÷¦æ¨Æ¶µ¥Ø®É¡A±z»Ýn²MªÅ¤ë¥÷ªºÀ³¥Îµ{¦¡ÅܼơAÅýÅܧó¥i¥H±o¨ì¼vÅT¡C
¦w¥þ©Ê
¡@¡@¦³´XÓ¤èªk¨Ó°õ¦æºô¯¸ªº¦w¥þ©Ê¡C¹ï©ó intranet ºô¯¸¡AMicrosoft Windows NTR ®Ú¾Ú±ÂÅv¡A¥i¥H³Ì²³æªº³]©w¡A¦]¬°±zªº¨Ï¥ÎªÌ³Ì¦³¥i¯à¤w¸gµn¤Jºô¸ô¡C±z¥i¯ànÅý©Ò¦³ªº¨Ï¥ÎªÌÀ˵ø¦æ¨Æ¾ä¶±¡A¦ý¬O¥u¦³ºÞ²zû¥i¥H¦s¨ú¨Ó·s¼W/²¾°£¦æ¨Æ¶µ¥Ø¶¡C
¦pªG½]®Ö¬O¤@Ó¦Ò¶q¡A±z¥i¥H²³æªº×§ï AddEvent »P DeleteEvent µ{§Ç¡AÀx¦s¥¦Ìªº¸ê°T¨ì½]®Öªí¤¤¡C¥t¥~¡A±z¥i¥H½T»{ IIS µn¤J¨CÓ¶±ÂIÀ»ªº¬d¸ß¦r¦ê»P¨Ï¥ÎªÌ¤¤¡CµM«á¡A³z¹L¬ö¿ý²³æªºåªR¡A¨Ó¨M©w½Ö¦b¤°»ò®ÉÔ°µ¹L¤°»ò¡C
µ²½×
¡@¡@¦b³o½g¤å³¹¤¤¡A§Ú¤w¸g¥Ü½d¤F¦p¦ó³]©w Web °ò¦ªº¦æ¨Æ¾ä¡C§Úªº Web °ò¦ªº¦æ¨Æ¾ä«D±`²³æ¡A¦ý¬O¥i¥H»´©öªº©µ¦ù¦¨¬°§¹¾ã¥\¯àªººô¯¸¡C§Ú¤w¸g¤p¤ßªº±Ôz«Ø¥ß Web °ò¦ªº¦æ¨Æ¾ä¤§¨BÆJ¡AÅýªì¾ÇªÌ¥i¥H°Ñ¾\ ASP¡BSQL »P ADO ªº°Ê§@¡C³Ì«á¡A§Ú¤]´£¨Ñ¤@¨Ç¦p¦óÅý³oÓºô¯¸½Õ¾ã¦Ü©Ò»Ý½d³òªº¹ê¥Î«ØÄ³¡C¦pªG±z¦³µo²{¥ô¦ó¿ù»~¡A©Î¬O¦³¥ô¦ó¯à§ïµ½³oÓµ{¦¡½Xªº«ØÄ³¡A½Ð¶Ç°e¹q¤l¶l¥ó¨ì semyan@hotmail.com¡C
© 2000 Microsoft Corporation. All rights reserved.