通过允许 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 HTMLSelectElementDim cnn As ADODB.ConnectionDim rsCountries As ADODB.RecordsetDim strSQL As String‘将Customers表的国家/地区列表‘赋值给recordset变量。strSQL = “SELECT DISTINCT Country FROM Customers;”Set cnn = New ADODB.Connectioncnn.Open MyDataEnvironment.Connection1rsCountries.Open strSQL, cnn1‘用recordset中的国家/地区填充Select元素的列表‘设置每个列表元素的Text属性。With rsCountriesDo While Not .EOFSet selElement = Me.Document.createElement("OPTION")selElement.Text = !CountrySelectCountry.Options.Add selElement.MoveNextLoopEnd WithEnd 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.selectedIndexMyDataEnvironment.CustByCountry SelectCountry.Options(intIndex).Text‘创建BindingCollection对象,然后将其‘ DataSource属性设置为您的数据环境,并将其‘ DataMember属性设置为CustByCountry Command对象。Set colBind = New BindingCollectionWith colBindSet .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>”.MoveNextLoop.MoveFirst.CloseEnd WithEnd Sub
要在 Internet Explorer 中查看完成的页面,请按下 F5 键或单击“标准型”工具条上的“启动”按钮。您也可以通过在“工程属性”对话框的“生成”选项卡上设置属性,然后在“文件”菜单中选择“Make .dll”来为工程显式地生成动态链接库和 HTML 页面。
该主题总结了帮助您创建与 SQL Server 数据库的数据进行交互的简单 DHTML 应用程序的一系列步骤。要从头开始,请参阅创建与 SQL Server 数据交互的 DHTML 应用程序。