股票網站方案設計
發表時間:2023-08-20 來源:明輝站整理相關軟件相關文章人氣:
[摘要]這篇文章介紹股市網站應用設計,包括股市成交線上查詢系統、線上股市買賣交易系統等應用的點子、設計實例、以及詳細解說,讓您快速地設計出各種股市的網站應用。股市網站資料庫應用股市使用網站資料庫,可以透過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>