通过允许 HTML 应用程序运行 SQL Server 的存储过程,可以增加它们的能力的和灵活性。您可以在“数据视图”窗口中创建存储过程,然后创建使用存储过程查看和更新数据的 Command 对象和元素。
该主题显示了如何创建一个存储过程,该存储过程从本应用方案先前的部分中创建的 Customers 表中按国家/地区返回客户地址记录。它显示了如何向在先前的主题中创建的 HTML 页面中添加 Select 元素。Select 元素使用该存储过程显示基于选定的国家/地区的地址记录。
要创建运行存储过程的 HTML 页面。请按照以下步骤执行:
注意 该主题是帮助您创建与 SQL Server 数据库的数据进行交互的简单数据库应用程序的一系列步骤之一。创建与 SQL Server 数据交互的 DHTML 应用程序是第一部分。
您可以通过使用鼠标右键单击“数据视图”窗口的 Stored Procedures 文件夹,并且选择“新建存储过程”命令向数据库添加存储过程。“数据视图”窗口将显示“新建存储过程”窗口,您可以在其中输入定义存储过程的 SQL Create Procedure 语句。
例如,可以向 Pubs 数据库添加存储过程 spCustByCountry,该存储过程接受一个输入参数 Country 并返回指定国家/地区的用户地址信息。在“新建存储过程”窗口中输入下面的 Create Procedure 语句:
CREATE PROCEDURE spCustByCountry @Country varchar(20)
AS
SELECT * FROM Customers
WHERE Country = @Country
当保存该存储过程时,将把它添加到数据库中。
详细信息 有关使用“数据视图”窗口创建存储过程的详细信息,请参阅 SQL 编辑器中的存储过程。
在“创建数据输入 HTML 页面”主题中,您创建了基于示例数据库 Pubs 的 Customers 表的数据环境 Command 对象。您也可以创建基于存储过程的数据环境 Command 对象。
例如,可以创建基于存储过程 spCustByCountry 的数据环境 Command 对象。要创建 Command 对象,请遵循《数据访问指南》中第五章“与 Microsoft Jet/Microsoft Access 数据库中的数据交互”应用方案中的各个步骤,设置下面的属性:
属性 | 设置值 |
Command Name | CustByCountry |
Connection | Connection1 |
Database Object | Stored Procedure |
Object Name | dbo.spCustByCountry |
在创建了为 HTML 页面提供数据源的 command 之后,您就可以创建页面了。从“工程”菜单中选择“添加 DHTML Page”。正如在本应用方案先前的主题中看到的那样,可以使用 DHTML 页面设计器向 HTML 页面添加标签和 TextField 元素。
可以使用 DHTML 页面设计器向 HTML 页面添加 Select 元素。Select 元素与组合框类似,允许您从列表中选择某个项目。
例如,要向在先前主题中创建的页面中添加称为 SelectCountry 的 Select 元素,请将元素拖动到页面上。然后将元素的 Name 和 id 属性设置为 SelectCountry。
通过向 HTML 页面的 Load 事件过程添加代码,您可以指定在 Select 元素中显示的列表项目。例如,要显示包括在 Customers 表的地址信息中的国家/地区的列表,请添加下面的代码:
Private Sub DHTMLPage_Load() ‘
声明Select
元素、connection, recordset
和string
变量。Dim selElement As HTMLSelectElement
Dim cnn As ADODB.Connection
Dim rsCountries As ADODB.Recordset
Dim strSQL As String
‘
将Customers
表的国家/
地区列表
‘
赋值给recordset
变量。strSQL = “SELECT DISTINCT Country FROM Customers;”
Set cnn = New ADODB.Connection
cnn.Open MyDataEnvironment.Connection1
rsCountries.Open strSQL, cnn1
‘
用recordset
中的国家/
地区填充Select
元素的列表
‘
设置每个列表元素的Text
属性。With rsCountries
Do While Not .EOF
Set selElement = Me.Document.createElement("OPTION")
selElement.Text = !Country
SelectCountry.Options.Add selElement
.MoveNext
Loop
End With
End Sub
详细信息 有关创建 Select 元素的详细信息,请参阅《部件工具指南》的“建立 Internet 应用程序”的在页面设计器中使用列表。
使用数据环境、ADO 和 BindingCollection 对象,可以方便地将运行基于存储过程的 Command 对象的代码添加到 Select 元素的 onafterupdate 事件过程中。然后就可以更新在 HTML 页面中显示的数据了。
例如,可以在 HTML 页面中显示客户的地址记录,这些客户来自在 SelectCountry 元素中选定的国家/地区。首先,在 HTML 页面对象的“声明”部分中声明 BindingCollection 对象变量:
Dim colBind As BindingCollection
然后将代码添加到元素的 onchange 事件过程中,以运行 cmdCustByCountry Command 对象,该对象使用元素的值作为输入参数:
Private Sub SelectCountry_onchange() Dim rsResults As ADODB.Recordset Dim intIndex As Integer ‘
运行CustByCountry Command
对象,并使用‘ SelectCountry
元素的值作为输入参数。intIndex = SelectCountry.selectedIndex
MyDataEnvironment.CustByCountry SelectCountry.Options(intIndex).Text
‘
创建BindingCollection
对象,然后将其
‘ DataSource
属性设置为您的数据环境,并将其
‘ DataMember
属性设置为CustByCountry Command
对象。Set colBind = New BindingCollection
With colBind
Set .DataSource = MyDataEnvironment
.DataMember = “CustByCountry”
‘
将HTML
页面上元素的Value
属性绑定到
‘ CustByCountry
记录集中的字段。.Add CustomerID, “Value”, “CustomerID”
.Add CompanyName, “Value”, “CompanyName”
.Add Address, “Value”, “Address”
.Add City, “Value”, “City”
.Add Region, “Value”, “Region”
.Add PostalCode, “Value”, “PostalCode”
.Add Country, “Value”, “Country”
End With
‘
将该记录集赋值给记录集变量rsResults
。Set rsResults = MyDataEnvironment.rsCustByCountry
‘
添加HTML
代码以在显示每个客户记录的页面中‘
动态创建一个表。Me.Document.body.insertAdjacentHTML “BeforeEnd”, “<DIV><HR SIZE=2></DIV>” With rsResults Do While Not .EOF Me.Document.body.insertAdjacentHTML “BeforeEnd”, _ “<TABLE BORDER CELLSPACING=1 CELLPADDING=7 ><TR HEIGHT=17>” & _
“<TD WIDTH=70>” & rsResults!CustomerID & “</TD>” & _
“<TD WIDTH=200>” & rsResults!CompanyName & “</TD>” & _
“<TD WIDTH=300>” & rsResults!Address & “</TD>” & _
“<TD WIDTH=100>” & rsResults!City & “</TD>” & _
“<TD WIDTH=50>” & rsResults!Region & “</TD>” & _
“<TD WIDTH=50>” & rsResults!PostalCode & “</TD>” & _
“<TD WIDTH=50>” & rsResults!Country & “</TD></TR>” & _
“</TABLE>”
.MoveNext
Loop
.MoveFirst
.Close
End With
End Sub
要在 Internet Explorer 中查看完成的页面,请按下 F5 键或单击“标准型”工具条上的“启动”按钮。您也可以通过在“工程属性”对话框的“生成”选项卡上设置属性,然后在“文件”菜单中选择“Make .dll”来为工程显式地生成动态链接库和 HTML 页面。
该主题总结了帮助您创建与 SQL Server 数据库的数据进行交互的简单 DHTML 应用程序的一系列步骤。要从头开始,请参阅创建与 SQL Server 数据交互的 DHTML 应用程序。