在ASP中用集合成批操作資料庫

來源:互聯網
上載者:User
集合|資料|資料庫 一、HTML的集合屬性
  首先,讓我們來熟悉一下HTML的集合屬性。在表單(FORM)資料或查詢(Query)參數中,當提交的多個參數採用同一個名稱時,這些參數值將構成一個集合,在ASP頁面可以擷取這些參數值或同名參數的個數。如在下面的頁面(Set.HTM)中,6個複選框採用同一個參數名MyCheckBox,其值分別為1、2、3、4、5、6。
<!-- Set.HTM -->
<html><head><title>集合屬性應用</title></head><body>
<p>請選擇要操作的項目,提交資料後,將會顯示您選擇的項目。
<form method="POST" action="set.asp">
<br>1、<input type="checkbox" name="MyCheckBox" value="1">
<br>2、<input type="checkbox" name="MyCheckBox" value="2">
<br>3、<input type="checkbox" name="MyCheckBox" value="3">
<br>4、<input type="checkbox" name="MyCheckBox" value="4">
<br>5、<input type="checkbox" name="MyCheckBox" value="5">
<br>6、<input type="checkbox" name="MyCheckBox" value="6">
<br><input type="submit" value="提交資料" name="B1">
</form></body></html>
  當用戶端選擇了要顯示的項目後,下面的ASP頁面(Set.ASP)給出用戶端選擇的項目個數及其值。
<!-- Set.ASP -->
<%@ LANGUAGE = VBScript %>
<html><head><title>集合操作測試</title></head>
<body>
<%
Response.Write "<br>您一共選擇了"&request("MyCheckBox").count&"項,"
Response.Write "<br>您選擇的項目有:"&request("MyCheckBox")
%>
</body></html>
如當用戶端選擇了第二、三、五項並提交資料後,將會看到如下結果:
您一共選擇了3項,
您選擇的項目有:2, 3, 5
應該注意到,“2, 3, 5”的形式與SQL語句要求的形式是一致的,我們可以直接或間接地利用這種形式的結果,如 "Select * from ATable where AFiled in(" & request("MyCheckBox") & ")"的實際
SQL查詢語句為“Select * from ATable where AFiled in(2, 3, 5)”。

二、HTML的集合屬性的應用
  下面我們結合一個實際的例子,討論一下如何在ASP頁面中利用HTML的集合屬性來成批操作資料庫。現在我們有一個記錄客戶電子信箱的ACCESS資料庫EMail,其中有一個資料表EmailList,包含CustomerId、CustomerName、CustomerEmail三個欄位,分別表示客戶編碼、客戶名稱、客戶電子信箱。在ASP頁面SelectId.ASP中,我們採用CheckBox列出所有客戶的客戶名稱(各個CheckBox的值為對應的客戶編碼),讓使用者選擇給哪些客戶寄送電子郵件。當使用者選擇了客戶並提交資料後,SendMail.ASP將檢索到這些客戶的電子信箱,並給這些客戶寄送電子郵件。具體的資訊請參見下面ASP程式碼和注釋資訊。

<!-- SelectId.ASP:列出所有客戶的客戶名稱 -->
<html><head><title>所有客戶的客戶名稱</title></head><body>
<p align=center><font style="font-family:宋體;font-size:9pt">
請選擇要給哪些客戶發送“新年問候”的電子郵件
<form method="POST" action="SendMail.asp">
<%'建立與ACCESS資料庫的串連
Set dbConnection = Server.CreateObject("ADODB.Connection")
dbConnection.open "Driver={Microsoft Access Driver (*.mdb)};"&_
"DBQ=C:\inetpub\wwwroot\test\Email.mdb"
'擷取所有客戶的客戶編碼、客戶名稱
Set rsCustomers = Server.CreateObject("ADODB.RecordSet")
rsCustomers.Open "Select CustomerId,CustomerName,CustomerEmail From EmailList",_
dbConnection,1,3,1
'顯示所有客戶的客戶名稱
while not rsCustomers.eof
%>
<br><input type="checkbox" name="CustomerId" value="<%=rsCustomers("CustomerId")%>">
<a href="mailto:<%=rsCustomers("CustomerEmail")%>">
<%=rsCustomers("CustomerName")%></a>
<%rsCustomers.MoveNext
wend
rsCustomers.close
set rsCustomers = nothing
dbConnection.close
set dbConnection = nothing
%>
<br><input type="submit" value="給客戶寄送電子郵件" name="B1"
style="font-family:宋體;font-size:9pt">
</form></body></html>

<!-- SendMail.ASP:給所選擇客戶發電子郵件 -->
<html><head><title>給所選擇客戶發電子郵件</title></head><body>
<p align=center><font style="font-family:宋體;font-size:9pt">
正在給下面客戶寄送電子郵件
<%'建立與ACCESS資料庫的串連
Set dbConnection = Server.CreateObject("ADODB.Connection")
dbConnection.open "Driver={Microsoft Access Driver (*.mdb)};"&_
"DBQ=C:\inetpub\wwwroot\test\Email.mdb"
'擷取所選擇客戶的電子信箱
Set rsCustomers = Server.CreateObject("ADODB.RecordSet")
rsCustomers.Open "Select CustomerName,CustomerEmail From EmailList where CustomerId in ("&_
Request("CustomerId")&")",dbConnection,1,3,1
while not rsCustomers.eof
'給一個客戶發電子郵件
Set myMail = CreateObject("CDONTS.NewMail")
myMail.From = "sales@test.com"
myMail.value("Reply-To") = "sales@test.com"
myMail.To =



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.