创建运行存储过程的 HTML 页面

通过允许 HTML 应用程序运行 SQL Server 的存储过程,可以增加它们的能力的和灵活性。您可以在“数据视图”窗口中创建存储过程,然后创建使用存储过程查看和更新数据的 Command 对象和元素。

该主题显示了如何创建一个存储过程,该存储过程从本应用方案先前的部分中创建的 Customers 表中按国家/地区返回客户地址记录。它显示了如何向在先前的主题中创建的 HTML 页面中添加 Select 元素。Select 元素使用该存储过程显示基于选定的国家/地区的地址记录。

要创建运行存储过程的 HTML 页面。请按照以下步骤执行:

  1. 向数据库中添加存储过程。

  2. 创建基于存储过程的数据环境 Command 对象。

  3. 向新的 HTML 页面添加标签和 TextField 元素。

  4. 向 HTML 页面添加 Select 元素。

  5. 添加代码以运行存储过程并显示结果。

  6. 加载 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 编辑器中的存储过程

创建基于存储过程的数据环境 Command 对象

在“创建数据输入 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 页面添加标签和 TextField 元素

在创建了为 HTML 页面提供数据源的 command 之后,您就可以创建页面了。从“工程”菜单中选择“添加 DHTML Page”。正如在本应用方案先前的主题中看到的那样,可以使用 DHTML 页面设计器向 HTML 页面添加标签和 TextField 元素。

向 HTML 页面添加 Select 元素

可以使用 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

加载 HTML 页面

要在 Internet Explorer 中查看完成的页面,请按下 F5 键或单击“标准型”工具条上的“启动”按钮。您也可以通过在“工程属性”对话框的“生成”选项卡上设置属性,然后在“文件”菜单中选择“Make .dll”来为工程显式地生成动态链接库和 HTML 页面。

步骤

该主题总结了帮助您创建与 SQL Server 数据库的数据进行交互的简单 DHTML 应用程序的一系列步骤。要从头开始,请参阅创建与 SQL Server 数据交互的 DHTML 应用程序