明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

股票网站方案设计

[摘要]这篇文章介绍股市网站应用设计,包括股市成交线上查询系统、线上股市买卖交易系统等应用的点子、设计实例、以及详细解说,让您快速地设计出各种股市的网站应用。股市网站资料库应用股市使用网站资料库,可以透过I...

这篇文章介绍股市网站应用设计,包括股市成交线上查询系统、线上股市买卖交易系统等应用的点子、设计实例、以及详细解说,让您快速地设计出各种股市的网站应用。

股市网站资料库应用
股市使用网站资料库,可以透过Internet、或Intranet提供以下的应用∶
* 股市成交线上查询*
* 线上股市买卖交易*
右上角标示*的应用,本节将提供设计的范例,并详加解说。
执行本章资料库的范例,所用的资料库可为Microsoft Access、Microsoft SQL Server、或Text档案(读者可修改成其他支援ODBC的资料库,详见1-6-5节),须於NT安装IIS 3.0,并於「控制台」中的「ODBC」,新建一个名称为「BookSamp」的资料来源,驱动程式为「Microsoft Access Driver」、「SQL Server」、或「Microsoft Text 驱动程式」。详见附录 范例磁片。

1
股市成交线上查询系统
「股市成交线上查询系统」,可以透过Internet,提供线上查询股票成交的功能。
股市投资人可以透过Internet,连线上证券公司的「股市成交线上查询系统」,输入帐户号码,即可查询成交的结果,包括成交的股票名称、和数量。
并可以提供股市大盘分析、即时技术分析、收盘价格、股市消息等股市资讯。
设计实例
让我们执行一个实例。
( 范例 data2.asp 股市成交线上查询
若要查询成交资料,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data2.asp。
於「帐号」处输入帐号後,譬如输入帐号123456,按下「成交查询」按钮,即可显示查询的结果如下,包括成交日期、股票名称、买进卖出、成交数量、成交价格∶ 
找不到成交记录时,譬如输入帐号654321,显示如下∶ 

设计实例详细解说
建立资料表
首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表Stock。
於栏名DATE、ID、TYPE、STOCK、QTY、PRICE分别输入成交日期、帐号、买进卖出、股票名称、成交数量、成交价格的资料。
使用Microsoft Access建立一个资料表Stock,如下∶ 
或使用Microsoft SQL Server建立一个资料表Stock,如下∶ 
或使用Text档案建立一个资料表Stock,如下∶ 

设计输入表单
接著,设计输入表单form,以让查询者输入帐号ID1,按下「成交查询」按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data2.asp档案(与form为同一个ASP档案),程式码如下∶
<form action="data2.asp" method="post"> 
帐号: <INPUT TYPE=TEXT VALUE="123456" NAME=ID1 SIZE=10>
<INPUT TYPE=submit VALUE="成交查询" name="Action">
</form>
网站伺服器执行data2.asp档案,首先经由Request.Form("ID1")取得查询者所输入的帐号ID1,若ID1非空白时,表示为表单输入所呼叫执行。
查询资料库
使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,设定SQL指令,查询为ID符合帐号Request.Form("ID1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
程式码如下∶
<%
IF Request.Form("ID1") THEN
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT DATE,STOCK,TYPE,QTY,PRICE FROM Stock WHERE ID=" & Request.Form("ID1")
Set RS = Conn.Execute(SQL)
%>
接著,要显示查询的结果了。
首先,由「 IF RS.EOF THEN ...」判断是否找到ID为帐号Request.Form("ID1")的资料,若RS.EOF为TRUE,则显示「报歉 , 帐号 ...未成交!」。
程式码,如下∶
成交查询结果:<br>
<% IF RS.EOF THEN %>
<FONT COLOR="#0000FF">报歉 , 帐号 <% =Request.Form("ID1") %> 未成交!</FONT>
若找到ID为帐号Request.Form("ID1")的成交资料时,则显示查询的结果,包括成交日期、股票名称、买进卖出、成交数量、成交价格,分别由RecordSets物件的RS(0)、RS(1) 、RS(2)、RS(3) 、RS(4) 取得。
RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。
若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。
程式码,如下∶
<% ELSE %>
<FONT COLOR="#FF0000">
恭喜您, 帐号 <% =Request.Form("ID1") %> <BR>
有成交, 如下表:<BR>
</FONT>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>日期</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交价格</FONT></TD>
</TR> 
<% Do While Not RS.EOF %>
<TR>
<% For i = 0 to RS.Fields.Count - 1 %>
<TD BGCOLOR="f7efde" VALIGN=TOP><FONT COLOR="#0000"><% = RS(i) %></FONT></TD>
<% Next %>
</TR>
<%
RS.MoveNext
Loop
RS.Close
Conn.Close
%>
</TABLE> 
<% END IF %>
最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。
全部的程式码,如下∶
<HTML>
<HEAD>
<TITLE>股市成交线上查询系统</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5">
</HEAD>
<CENTER>
<BODY BGCOLOR=#FFFFFF>
<FONT SIZE=+2 COLOR="#0000FF">股市成交线上查询系统</FONT> 
<%
IF Request.Form("ID1") THEN
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT DATE,STOCK,TYPE,QTY,PRICE FROM Stock WHERE ID=" & Request.Form("ID1")
Set RS = Conn.Execute(SQL)
%>
<HR>
成交查询结果:<br>
<% IF RS.EOF THEN %>
<FONT COLOR="#0000FF">报歉 , 帐号 <% =Request.Form("ID1") %> 未成交!</FONT>
<% ELSE %>
<FONT COLOR="#FF0000">
恭喜您, 帐号 <% =Request.Form("ID1") %> <BR>
有成交, 如下表:<BR>
</FONT>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>日期</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交价格</FONT></TD>
</TR> 
<% Do While Not RS.EOF %>
<TR> 
<% For i = 0 to RS.Fields.Count - 1 %>
<TD BGCOLOR="f7efde" VALIGN=TOP><FONT COLOR="#0000"><% = RS(i) %></FONT></TD> 
<% Next %>
</TR> 
<%
RS.MoveNext
Loop
RS.Close
Conn.Close
%>
</TABLE> 
<% END IF %>
<HR>
<% END IF %> 
<BR> 
<form action="data2.asp" method="post"> 
帐号: <INPUT TYPE=TEXT VALUE="123456" NAME=ID1 SIZE=10>
<INPUT TYPE=submit VALUE="成交查询" name="Action">
</form>
<HR>
</CENTER>
</BODY>
</HTML>

2
线上股市买卖交易系统
「线上股市买卖交易系统」,可以透过Internet,提供线上股票委托买卖下单的功能。
股市投资人可以透过Internet,连线上证券公司的「线上股市买卖交易系统」,输入帐户号码、买卖的股票名称、和数量,即可完成委托下单的手续。
委托下单时,买卖交易系统提供可以增加、取消、查询委托下单的功能。
下单後,透过Internet,可查询成交的结果,包括成交的股票名称、和数量。
设计实例
让我们执行一个实例。
( 范例 data13.asp 线上股市买卖交易
若要做线上股市买卖交易,於用户端使用浏览器,浏览本书所附安装於网站伺服器的data13.asp。
於「帐号」处输入帐号如123456,於「买卖」处选择买进卖出如买进,於「股票代号」处输入股票代号如2306,於「数量」处输入数量如10,於「价格」处输入价格如80後,按下「委托下单」按钮,即可显示委托下单的结果如下,包括帐号、买卖、股票代号、数量、价格、委托单代号∶ 

取消委托单
委托下单後,可以取消所委托的记录,於「委托单代号」处输入委托单代号如1997428224659後,按下「取消委托单」按钮,即可显示取消委托的结果如下∶ 

若待取消的委托单尚未委托下单过,则取消委托单时显示「找不到委托单」如下∶ 

查询委托单
委托下单後,可以查询所有委托的记录,仅须於「帐号」处输入帐号如123456後,按下「查询委托单」按钮,即可显示委托单的结果如下∶ 

查询委托单时,若尚未委托下单,则查询委托单时将显示「找不到委托单」如下∶ 

成交查询
委托下单後,可以查询所有委托的记录是否已经成交,仅须於「帐号」处输入帐号如123456後,按下「成交查询」按钮,即可显示成交查询的结果如下∶ 

成交查询时,若尚未成交,则查询成交将显示「未成交」如下∶ 

设计实例详细解说
建立资料表
首先使用Microsoft Access、Microsoft SQL Server 、Text档案、或任何一种支援ODBC的资料库,建立一个资料表StockRequest,储存委托单记录。
使用Microsoft Access建立一个资料表StockRequest,如下∶ 

建立栏位ID、TYPE、STOCK、QTY、PRICE、SN,分别代表一个委托单的客户帐号、买进卖出、股票代号、数量、价格、委托单号码。建立资料表时不必输入资料。
或使用Microsoft SQL Server建立一个资料表StockRequest,如下∶ 
或使用Text档案建立一个资料表StockRequest,如下∶ 
另外建立一个资料表Stock,储存成交的记录,於栏名DATE、ID、TYPE、STOCK、QTY、PRICE,分别输入成交日期、帐号、买进卖出、股票名称、成交数量、成交价格的资料。
委托单记录资料表StockRequest,与成交的记录资料表Stock之间的关系,留给读者自行发挥。
使用Microsoft Access建立一个资料表Stock,如下∶ 
或使用Microsoft SQL Server建立一个资料表Stock,如下∶ 
或使用Text档案建立一个资料表Stock,如下∶ 

设计输入的表单
接著,设计输入的表单form,线上购物时,当客户输入帐号ID1,选择买进卖出TYPE1,输入股票代号STCOK1,数量QTY1,价格PRICE1,按下「委托下单」按钮submit时,即使用POST的方式将输入资料传送到网站伺服器,并执行於「form action=...」所设定的data13.asp档案(与form为同一个ASP档案),程式码如下∶
股市买卖委托, 请输入以下资料:<br>
<form action="data13.asp" method="post">
<FONT COLOR="#FF8080"> </FONT>帐号 (如123456): 
<INPUT TYPE=TEXT VALUE="123456" NAME="ID1" SIZE=10><BR>
<FONT COLOR="#FF8080"> </FONT>买卖: 
<select name="TYPE1">
<OPTION SELECTED>买进
<OPTION>卖出
</select>
<br>
<FONT COLOR="#FF8080"> </FONT>股票代号 (如2306): 
<INPUT TYPE=TEXT VALUE="2306" NAME="STOCK1" SIZE=6><BR>
<FONT COLOR="#FF8080"> </FONT>数量: 
<INPUT TYPE=TEXT VALUE="10" NAME="QTY1" SIZE=6><BR>
<FONT COLOR="#FF8080"> </FONT>价格: 
<INPUT TYPE=TEXT VALUE="80" NAME="PRICE1" SIZE=6><BR> 
<INPUT TYPE=submit VALUE="委托下单" name="Action"><p> 
<HR WIDTH = 30% ALIGN=LEFT>
<FONT COLOR="#FF0000"> </FONT>委托单代号: 
<INPUT TYPE=TEXT NAME="SN1" SIZE=12>
<INPUT TYPE=submit VALUE="取消委托单" name="Action"><P> 
<FONT COLOR="#0000FF"> </FONT>帐号: 
<INPUT TYPE=TEXT VALUE="123456" NAME="ID2" SIZE=10>
<INPUT TYPE=submit VALUE="查询委托单" name="Action"><P> 
<FONT COLOR="#00FF00"> </FONT>帐号: 
<INPUT TYPE=TEXT VALUE="123456" NAME="ID3" SIZE=10>
<INPUT TYPE=submit VALUE="成交查询" name="Action">
</form>
取消取消委托单时,客户输入委托单代号SN1,按下「取消委托单」按钮submit送到网站伺服器。
查询委托单时,客户输入帐号ID2,按下「查询委托单」按钮submit送到网站伺服器。
查询成交时,客户输入帐号ID3,按下「成交查询」按钮submit送到网站伺服器。
当网站伺服器执行data13.asp档案时,首先经由Request.Form("Action")取得所按submit按钮上的显示文字VALUE,Left(Request.Form("Action"),2)系只取前两个中文字,若Request.Form("Action")非空白时,表示为表单输入所呼叫执行。
由「SELECT CASE Left(Request.Form("Action"),2) 」判断是按了那个按钮。若按钮上前两个字为「委托」时,则执行AddStock() 副程式;若为「取消」时,则执行DeleteStock() 副程式;若为「查询」时,则执行CheckStock() 副程式;若为「成交」时,则执行CheckTrans() 副程式。
<%
SELECT CASE Left(Request.Form("Action"),2)
CASE "委托"
AddStock()
CASE "取消"
DeleteStock()
CASE "查询"
CheckStock()
CASE "成交"
CheckTrans()
END SELECT
%>
委托下单
按了「委托下单」按钮时,将执行AddStock() 副程式。
首先,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
於StockRequest资料表,使用「INSERT INTO...」指令新增一笔资料。此笔新增资料的栏位ID、TYPE、STOCK、QTY、PRICE为所输入的表单资料。委托单栏位SN系设定为下单时的日期时间。
程式码如下∶
Sub AddStock()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SNNO = YEAR(DATE()) & MONTH(DATE()) & DAY(DATE()) & HOUR(NOW) & MINUTE(NOW) & SECOND(NOW) 
SQL = "INSERT INTO StockRequest (ID, TYPE, STOCK, QTY, PRICE, SN) VALUES('" & Request.Form("ID1") & "','" & LEFT(Request.Form("TYPE1"),2) & "','" & Request.Form("STOCK1") & "','" & Request.Form("QTY1") & "','" & Request.Form("PRICE1") & "','" & SNNO & "')" 
Set RS = Conn.Execute(SQL)
接著,要显示执行的结果了。
显示执行的结果时,配合<TABLE>表格的HTML语法,将输入资料与委托单代号填入表格的各栏位当中。
程式码,如下∶
<FONT COLOR="#0000FF">委托下单结果:</FONT><br>
<FONT COLOR="#0000FF">下单 OK ! 委托单代号为 <% =SNNO %></FONT>
<TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>帐号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>委托单代号</FONT></TD>
</TR> 
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("TYPE1"),2) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("STOCK1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("QTY1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("PRICE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =SNNO %></FONT></TD>
</TR> 
</TABLE>
<%
Conn.Close
End Sub %>
最後,使用Conn.Close关闭资料库。
取消委托单
按了「取消委托单」按钮时,将执行DeleteStock() 副程式。
首先,先寻找到所待取消的委托单,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,於StockRequest资料表,设定SQL指令,查询委托单号码栏位符合所输入Request.Form("SN1")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
由「IF RS.EOF THEN ...」判断是否找到所待取消的委托单,若RS.EOF为TRUE,表示找不到此委托单,则显示「找不到委托单代号...」。
程式码如下∶
<%
Sub DeleteStock()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT * FROM StockRequest WHERE SN = '" & Request.Form("SN1") & "'" 
Set RS = Conn.Execute(SQL)
%> 
<HR>
<FONT COLOR="#0000FF">取消委托结果:</FONT><br>
<% 
IF RS.EOF THEN 
'找不到 ! 
%>
<FONT COLOR="#FF0000">找不到委托单代号 <% =Request.Form("SN1") %> !</FONT>
若找到所待取消的委托单,则於StockRequest资料表,使用「DELETE FROM...」指令删除此笔委托单资料。
接著,显示执行的结果,配合<TABLE>表格的HTML语法,将於StockRequest资料表删除的委托单资料,填入表格的各栏位当中,以显示出来。
程式码,如下∶
<% ELSE '取消委托 ! %>
<FONT COLOR="#FF0000">委托单代号 <% =Request.Form("SN1") %> 已经取消 !</FONT> 
<TABLE COLSPAN=8 CELLPADDING=1 BORDER=1> 
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>帐号</FONT></TD> 
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD> 
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票代号</FONT></TD> 
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格</FONT></TD> 
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>委托单代号</FONT></TD>
</TR> 
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(0) %></FONT></TD> 
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD> 
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(2) %></FONT></TD> 
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(3) %></FONT></TD> 
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(4) %></FONT></TD> 
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(5) %></FONT></TD>
</TR> 
</TABLE>
<%
'StockRequest删除一笔
SQL = "DELETE FROM StockRequest WHERE SN = '" & Request.Form("SN1") & "'"
Set RS = Conn.Execute(SQL)
END IF 
Conn.Close
End Sub %>
最後,使用Conn.Close关闭资料库。
查询委托单
按了「查询委托单」按钮时,执行CheckStock() 副程式。
首先,先寻找到所待查询帐号的委托单,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,於StockRequest资料表,设定SQL指令,查询帐号ID符合所输入Request.Form("ID2")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
由「IF RS.EOF THEN ...」判断是否找到所待查询帐号的所有委托单记录,若RS.EOF为TRUE,表示找不到此帐号的委托单,则显示「找不到委托单 !」。
程式码如下∶
<%
Sub CheckStock()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT * FROM StockRequest WHERE ID = '" & Request.Form("ID2") & "'" 
Set RS = Conn.Execute(SQL)
%>
<HR>
<FONT COLOR="#0000FF">查询委托单结果:</FONT><br> 
<% 
IF RS.EOF THEN 
'找不到委托单 ! 
%>
<FONT COLOR="#FF0000">找不到委托单 !</FONT>
若找到帐号ID符合所输入Request.Form("ID2")的资料,则显示查询的结果,包括帐号、买卖、股票代号、数量、价格、委托单代号,分别由RecordSets物件的RS(0)、RS(1)、RS(2)、RS(3)、RS(4)、RS(5)取得。
RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。
由「If INT(j/2)*2 <> j Then... 」判断显示奇偶笔的委托单资料,奇偶列显示不同的颜色。
若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。
程式码,如下∶
<% ELSE %>
<% '有委托单 ! %>
<FONT COLOR="#0000ff">委托单如下:</FONT> 
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>帐号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>委托单代号</FONT></TD>
</TR> 
<% j = 1 %> 
<% Do While Not RS.EOF %>
<TR> 
<% For i = 0 to RS.Fields.Count - 1 %>
<% If INT(j/2)*2 <> j Then %>
<TD BGCOLOR="E8FFFF" ALIGN=CENTER>
<FONT COLOR="#000000"><%= RS(i) %></FONT></TD> 
<% Else %>
<TD ALIGN=CENTER BGCOLOR="#C0FFFF">
<FONT COLOR="#000000"><%= RS(i) %></FONT></TD>
<% END IF %> 
<% Next %>
</TR>
<%
RS.MoveNext
j = j + 1 
Loop
%>
</TABLE> 

<% END IF 
RS.Close
Conn.Close
End Sub %>
最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。
成交查询
按了「成交查询」按钮时,执行CheckTrans() 副程式。
首先,寻找到所待查询帐号的成交记录,使用「Server.CreateObject」建立连线的物件,并使用「Open」开启待存取查询资料库BookSamp。
再使用SELECT的SQL指令查询资料库的资料,於Stock资料表,设定SQL指令,查询帐号栏位ID符合所输入Request.Form("ID3")的资料,下个「Execute」指令,即可开始执行存取查询资料库的动作,并将查询结果储存到RecordSets物件RS。
由「IF RS.EOF THEN ...」判断是否找到所待查询帐号的所有成交记录,若RS.EOF为TRUE,表示找不到此帐号的成交记录,则显示「报歉, 帐号...未成交!」。
程式码如下∶
<%
Sub CheckTrans()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT DATE,STOCK,TYPE,QTY,PRICE FROM Stock WHERE ID=" & Request.Form("ID3") 
Set RS = Conn.Execute(SQL)
%> 
<HR>
成交查询结果:<br>
<% IF RS.EOF THEN %>
<FONT COLOR="#0000FF">报歉 , 帐号 <% =Request.Form("ID3") %> 未成交!</FONT>
若找到帐号ID符合所输入Request.Form("ID3")的资料,则显示查询的结果,包括日期、股票、买卖、成交数量、成交价格,分别由RecordSets物件的RS(0)、RS(1)、RS(2)、RS(3)、RS(4) 取得。
RS.Fields.Count表示RecordSets物件的栏位数,由「For i = 0 to RS.Fields.Count - 1」取得RS(i) 各栏位的资料。配合<TABLE>表格的HTML语法,将结果填入表格的各栏位当中。
若还有下一笔资料,使用RS.MoveNext移到下一笔的位置。
程式码,如下∶
<% ELSE %>
<FONT COLOR="#FF0000">
恭喜您, 帐号 <% =Request.Form("ID3") %> <BR>
有成交, 如下表:<BR>
</FONT>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> 
<TR> 
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>日期</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交价格</FONT></TD> 
</TR>
<% Do While Not RS.EOF %>
<TR> 
<% For i = 0 to RS.Fields.Count - 1 %>
<TD BGCOLOR="f7efde" VALIGN=TOP><FONT COLOR="#0000"><% = RS(i) %></FONT></TD> 
<% Next %>
</TR> 
<%
RS.MoveNext
Loop
RS.Close
Conn.Close
%>
</TABLE> 
<% END IF 
End Sub %>
最後,使用RS.Close关闭RecordSet,使用Conn.Close关闭资料库。
全部的程式码,如下∶
<HTML>
<HEAD>
<TITLE>线上股市买卖交易系统</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=big5">
</HEAD> 
<BODY BGCOLOR=#FFFFFF>
<FONT SIZE=+2 COLOR="#0000FF">线上股市买卖交易系统</FONT>
<%
SELECT CASE Left(Request.Form("Action"),2) 
CASE "委托"
AddStock() 
CASE "取消"
DeleteStock() 
CASE "查询"
CheckStock() 
CASE "成交"
CheckTrans()
END SELECT 
Sub AddStock()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SNNO = YEAR(DATE()) & MONTH(DATE()) & DAY(DATE()) & HOUR(NOW) & MINUTE(NOW) & SECOND(NOW) 
SQL = "INSERT INTO StockRequest(ID,TYPE,STOCK,QTY,PRICE,SN) VALUES('" & Request.Form("ID1") & "','" & LEFT(Request.Form("TYPE1"),2) & "','" & Request.Form("STOCK1") & "','" & Request.Form("QTY1") & "','" & Request.Form("PRICE1") & "','" & SNNO & "')" 
Set RS = Conn.Execute(SQL)
%>
<HR>
<FONT COLOR="#0000FF">委托下单结果:</FONT><br>
<FONT COLOR="#0000FF">下单 OK ! 委托单代号为 <% =SNNO %></FONT>
<TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>帐号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>委托单代号</FONT></TD> 
<TR> 
</TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("ID1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =LEFT(Request.Form("TYPE1"),2) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("STOCK1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("QTY1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =Request.Form("PRICE1") %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =SNNO %></FONT></TD>
</TR> 
</TABLE> 
<%
Conn.Close
End Sub %> 
<%
Sub DeleteStock()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT * FROM StockRequest WHERE SN = '" & Request.Form("SN1") & "'"
Set RS = Conn.Execute(SQL)
%>
<HR> 

<FONT COLOR="#0000FF">取消委托结果:</FONT><br>
<% 
IF RS.EOF THEN 
'找不到 ! 
%>
<FONT COLOR="#FF0000">找不到委托单代号 <% =Request.Form("SN1") %> !</FONT>
<% ELSE 
'取消委托 ! 
%>
<FONT COLOR="#FF0000">委托单代号 <% =Request.Form("SN1") %> 已经取消 !</FONT> 
<TABLE COLSPAN=8 CELLPADDING=1 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>帐号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>委托单代号</FONT></TD> 
</TR> 
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(0) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(1) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(2) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(3) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(4) %></FONT></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><FONT COLOR="#0000"><% =RS(5) %></FONT></TD>
</TR> 
</TABLE> 
<%
'StockRequest删除一笔
SQL = "DELETE FROM StockRequest WHERE SN = '" & Request.Form("SN1") & "'"
Set RS = Conn.Execute(SQL)
END IF 
Conn.Close
End Sub %> 
<%
Sub CheckStock()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa","" 
SQL = "SELECT * FROM StockRequest WHERE ID = '" & Request.Form("ID2") & "'" 
Set RS = Conn.Execute(SQL)
%>
<HR>
<FONT COLOR="#0000FF">查询委托单结果:</FONT><br> 
<% 
IF RS.EOF THEN 
'找不到委托单 ! 
%>
<FONT COLOR="#FF0000">找不到委托单 !</FONT> 
<% ELSE %>
<% '有委托单 ! %>
<FONT COLOR="#0000ff">委托单如下:</FONT>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1> 
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>帐号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>价格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>委托单代号</FONT></TD>
</TR> 
<% j = 1 %> 
<% Do While Not RS.EOF %>
<TR> 
<% For i = 0 to RS.Fields.Count - 1 %>
<% If INT(j/2)*2 <> j Then %>
<TD BGCOLOR="E8FFFF" ALIGN=CENTER>
<FONT COLOR="#000000"><%= RS(i) %></FONT></TD> 
<% Else %>
<TD ALIGN=CENTER BGCOLOR="#C0FFFF">
<FONT COLOR="#000000"><%= RS(i) %></FONT></TD>
<% END IF %> 
<% Next %>
</TR> 
<%
RS.MoveNext
j = j + 1
Loop
%>
</TABLE> 
<% END IF 
RS.Close
Conn.Close
End Sub %> 
<%
Sub CheckTrans()
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "BookSamp","sa",""
SQL = "SELECT DATE,STOCK,TYPE,QTY,PRICE FROM Stock WHERE ID=" & Request.Form("ID3")
Set RS = Conn.Execute(SQL)
%>
<HR>
成交查询结果:<br>
<% IF RS.EOF THEN %>
<FONT COLOR="#0000FF">报歉 , 帐号 <% =Request.Form("ID3") %> 未成交!</FONT>
<% ELSE %>
<FONT COLOR="#FF0000">
恭喜您, 帐号 <% =Request.Form("ID3") %> <BR>
有成交, 如下表:<BR>
</FONT>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=1>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>日期</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>股票</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>买卖</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交数量</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT>成交价格</FONT></TD> 
</TR>
<% Do While Not RS.EOF %>
<TR>
<% For i = 0 to RS.Fields.Count - 1 %>
<TD BGCOLOR="f7efde" VALIGN=TOP><FONT COLOR="#0000"><% = RS(i) %></FONT></TD>
<% Next %>
</TR>
<%
RS.MoveNext
Loop
RS.Close
Conn.Close
%>
</TABLE> 
<% END IF 
End Sub %> 
<HR>
股市买卖委托, 请输入以下资料:<br>
<form action="data13.asp" method="post">
<FONT COLOR="#FF8080"> </FONT>帐号 (如123456): 
<INPUT TYPE=TEXT VALUE="123456" NAME="ID1" SIZE=10><BR>
<FONT COLOR="#FF8080"> </FONT>买卖:
<select name="TYPE1">
<OPTION SELECTED>买进
<OPTION>卖出
</select>
<br>
<FONT COLOR="#FF8080"> </FONT>股票代号 (如2306): 
<INPUT TYPE=TEXT VALUE="2306" NAME="STOCK1" SIZE=6><BR>
<FONT COLOR="#FF8080"> </FONT>数量: 
<INPUT TYPE=TEXT VALUE="10" NAME="QTY1" SIZE=6><BR>
<FONT COLOR="#FF8080"> </FONT>价格: 
<INPUT TYPE=TEXT VALUE="80" NAME="PRICE1" SIZE=6><BR> 
<INPUT TYPE=submit VALUE="委托下单" name="Action"><p> 
<HR WIDTH = 30% ALIGN=LEFT>
<FONT COLOR="#FF0000"> </FONT>委托单代号: 
<INPUT TYPE=TEXT NAME="SN1" SIZE=12>
<INPUT TYPE=submit VALUE="取消委托单" name="Action"><P> 
<FONT COLOR="#0000FF"> </FONT>帐号: 
<INPUT TYPE=TEXT VALUE="123456" NAME="ID2" SIZE=10>
<INPUT TYPE=submit VALUE="查询委托单" name="Action"><P> 
<FONT COLOR="#00FF00"> </FONT>帐号: 
<INPUT TYPE=TEXT VALUE="123456" NAME="ID3" SIZE=10>
<INPUT TYPE=submit VALUE="成交查询" name="Action">
</form> 
<HR> 
</BODY>
</HTML>