数据访问页可以绑定到 access 数据库或 Microsoft SQL Server 6.5 以及更高版本数据库中的数据。同时,还可以包括 Microsoft Office XP Web Components 实例,而这些实例又可以连接到其他数据源,例如 Microsoft Excel。
可以在安装 Microsoft access 2002 时,尝试使用数据访问页。若要执行此操作:
在本专栏中,我将讨论 access 2002 数据访问页中的新增功能和增强功能、部署和授权考虑因素以及开发方法,其中包括如何使用 Visual Basic® for Applications 代码和 Visual Basic Scripting Edition (VBScript) 处理数据访问页。我还将简要介绍 Microsoft Office Data Source 控件 (MSODSC) 以及如何在数据访问页解决方案中利用该功能。
数据访问页涉及了很多问题,因此在本专栏中我只能省略更深层次的详细信息。并且,由于篇幅有限,我将只从 access 2002 的角度对数据访问页进行讨论。不过,如果时间允许,还有很多的参考知识供您学习,本专栏末尾包含了这些参考。
如果您以前从未使用过数据访问页,建议您通过 access 2002 帮助中的下列五个主题进行快速入门:
其他 access 2002 帮助主题将指导您在数据访问页中使用 Office XP Web Components,包括:
若要在 access 2002 帮助中查找这些主题,请单击“目录”选项卡上的“Web 数据”,然后单击“数据访问页”。
access 2002 数据访问页的新增功能和增强功能
access 2002 为数据访问页增加了多个新功能,包括:
连接、部署和授权考虑因素
连接到数据源
若要更改 Access 2000 中多个数据访问页的数据连接信息,必须逐个打开每个文件更改其中的页连接。access 2002 可以将多个页指向单个数据连接文件,这样就无需逐个更改每一页的连接信息。有两种类型的连接文件:Office 数据库连接 (.odc) 文件(包含连接信息、关键字和对数据连接的说明)和 Microsoft 数据链接 (.udl) 文件(Microsoft 专为指定连接字符串而创建的标准文件格式)。用于管理数据连接信息的主要属性包括:
嵌入或链接 XML 数据
在数据访问页上,嵌入或链接可扩展标记语言 (XML) 数据是在计算机系统与业务合作伙伴之间共享数据最佳方案。
可通过数据访问页“属性”窗口上的“数据”选项卡访问下列属性,这些属性用于在数据访问页中嵌入 XML 数据,并作为 MSE 中 MSODSC 的一个属性:
有关详细信息,请参阅 Access 2002 数据访问页中包含的 XML(英文)。
在 Intranet 或 Internet 上驻留数据访问页
虽然使用 Access 设计数据访问页,但应该将这些页与 access 数据库文件或项目分开保存,不论是文件共享位置(对于 Intranet 解决方案)还是 Web 服务器 (可以是 Intranet 也可以是 Internet 解决方案)。“数据库窗口”中的页图标只是页的链接(如果用鼠标右键单击“数据库窗口”中的页图标并单击“属性”,将在“路径”框中看到页存储的位置)。
若要允许最终用户打开数据访问页,请执行下列操作:
有关详细信息,请参阅知识库中的小文章如何在 Internet 上部署数据访问页(英文)或大文章在 Internet 或 Intranet 上部署数据访问页(英文)。
授权和数据访问页
用户不需要 access 许可证就可以查看数据访问页,但是必须具有 Office XP Web Components。无论用户是否具有有效的 Office XP 许可证,使用 MSODSC 连接到数据源的 Internet Explorer 5 或更高版本中显示的数据访问页将始终具有全部功能。
但是,如果用户要与页中的任何 Office XP Web Components(例如电子表格、PivotTable® 列表或图表)进行交互,必须在计算机上安装 Office XP Web Components 支持文件并具有有效的 Office XP 许可证。Office XP Web 组件随 Office XP 和单机版的 Microsoft FrontPage® 2002 版本一起提供。如果计算机上没有安装 Office XP,您可以下载 Office XP Web 组件支持文件(单击此处进行下载(英文))。但是,如果您具有 Office XP Web Components 支持文件,但没有安装 Office XP 或 FrontPage 2002,就只能在页上查看 Office XP Web Components,而无法与这些组件进行交互或者使用它们的设计功能。
有关数据访问页授权和功能考虑因素的详细信息,请参阅 Microsoft Office XP 资源工具包中升级到 Access 2002(英文)主题中的“授权和功能的详细信息”部分。
数据访问页开发方法
基本上有两种开发数据访问页的方法:一种方法是在数据访问页设计环境之外使用 Visual Basic for Applications (VBA) 代码对页进行操作。另一种方法是在数据访问页设计环境中使用脚本语言(例如,Microsoft Visual Basic 脚本编辑器 (VBScript) 或 Microsoft Jscript®)对运行时页的行为进行控制。VBA 方法具有某些限制,通常仅当需要在项目开发过程中或调试阶段通过编程处理一组数据访问页的属性时才能使用。大多数情况下,应使用脚本方法。由于数据访问页是基于 HTML 的,您可以在 HTML 中嵌入脚本代码,为最终用户提供运行时功能。我将在以下两部分中向您展示如何利用这两种方法。
通过 VBA 使用数据访问页
使用 Microsoft access 10.0 对象库可以同时更改多个数据访问页,而不必将时间浪费在逐个打开每页进行相同的更改上。
使用 CurrentProject 对象的 AllDataaccessPages 集合,可以通过编程访问打开的 Access 数据库中或项目文件中的所有页。以下示例列出了打开的 access 数据库或项目中的每页的名称。
Public Sub AllPagesInCurrentProject()
Dim intDAPCounter As Integer |
还可以使用 Application 对象的 DataaccessPages 集合通过编程访问特定 access 实例中的所有打开的页。DataaccessPages 集合对于每个打开的页都包含一个 DataaccessPage 对象。以下示例列出了当前 access 实例中打开的每页的名称。
Public Sub AllOpenPagesInApplication()
Dim intDAPCounter As Integer |
通过编程访问页后,可以使用特定 DataaccessPage 对象的方法或属性对页进行操作。
DataaccessPage 对象经常使用的一个成员是 Document 属性,该属性返回代表页代码的动态的 HTML (DHTML) document 对象。可以在 DHTML、HTML 和 CSS 参考 (htmlref.chm) 中查阅 DHTML document 对象的帮助,这些文件随安装的 Office XP 一起提供。
以下是如何使用 Document 属性的一个示例,下列代码返回了第一个打开的页的标题:
Public Sub DisplayPageTitle()
Const FIRST_OPEN_PAGE As Integer = 0 |
DataaccessPage 对象另一个经常使用的成员是 MSODSC 属性,该属性返回 Office XP Web 组件 DataSourceControl 对象,代表将页绑定到源数据的 MSODSC 实例。可以在 Microsoft Office Web Components Visual Basic 参考 (owcvba10.chm) 中查阅 DataSourceControl 对象帮助,该文件随安装的 Office XP 一起提供。
以下是如何使用 MSODSC 属性的一个示例,下列代码将第一个打开的页的相关数据作为 XML 导出到独立的文件中:
Public Sub ExportXMLFromFirstOpenPage()
' 必须首先设置对 Microsoft Office XP |
如果需要更多示例,以下是一些知识库文章集萃,讲述了如何通过 VBA 使用数据访问页:
通过 Script 使用数据访问页
现在,让我们转移注意力,讨论如何通过编程控制最终用户的对数据访问页运行时体验。若要执行此操作,需要编写将附加到页的脚本。最终用户不能通过页用户界面看到该脚本,但是它提供了页元素可以利用的功能,用于响应最终用户或其他运行时行为。该脚本可以用 VBScript 或 Jscript 编写。
探索 VBScript 和 Jscript
VBScript 是一种小型和轻便的解释语言。出于安全性的考虑,因此不包括对最底层操作系统的直接访问。VBScript 语法和用法类似于 VBA,但忽略了下列功能和关键字:
由于 VBScript 对于 VBA 和 Office 开发人员非常通用,因此在这篇文章中,我不想讨论 Jscript 的使用;不过,如果您比较熟悉 Java 或 javascript 语言,在学习和使用 Jscript 时不会有什么问题。
有关 VBScript 和 Jscript 的详细信息,请参阅 Microsoft Scripting Technologies 网站(英文)或 Microsoft 脚本编辑器帮助(在 Microsoft 脚本编辑器中,按 F1 或单击“帮助”菜单上的“Microsoft 脚本编辑器帮助”)。
使用 Microsoft 脚本编辑器
若要访问数据访问页的脚本,请使用前文所提及的名为 Microsoft 脚本编辑器 (MSE) 的脚本环境。若要访问 MSE,同时在“设计”视图中具有打开的页面,请执行下列操作之一:
在 MSE 中,工具箱(单击“视图”菜单上的“工具箱”或按 CTRL+ALT+X 访问)具有某些简洁的代码复用功能。可以选择并拖动经常使用的代码到“HTML”选项卡,并且可以通过“剪贴板环”选项卡访问最近 15 个基于文本的“复制”和“剪切”操作。
有关如何使用 MSE 的详细信息,请参阅 Wes Kim 撰写的文章创建基于 Web 的应用程序的要点(英文)。
脚本示例
现在,您已经大致了解了脚本和 MSE,接下来,我将为您展示一些示例,讲解如何在数据访问页上使用脚本。
若要通过脚本引用页面上的对象,请引用它们的名称。例如,在罗斯文示例数据库中的“雇员”页上,可以通过以下对象的名称来引用 Address、BirthDate、City 和 Country 控件对象。还可以使用 MSE “代码”窗口中的“对象”和“事件”列表来选择对象和该对象的事件处理程序。例如,在“对象”列表中选择 BirthDate 控件对象并在“事件”列表中选择 onmouseover 事件,可以编写在鼠标指针移过 BirthDate 控件时执行的代码:
<script language=vbscript for=BirthDate event=onmouseover> <!-- MsgBox "将鼠标指针移过 BirthDate 控件!" --> |
<SCRIPT language=vbscript event=onmouseover for=City> <!-- Me.Disabled = True --> |
还可以访问一些内置对象,例如,在上述“通过 VBA 使用数据访问页”部分中曾经提及的 document 对象和 MSODSC 对象,以及在 Web 浏览器中查看时导入到打开窗口中的 window 对象。
为了提供更真实的示例,一位同行 -- Office 开发人员,为我们提供了下列代码,将数据访问页上的要脱销项目的颜色更改为红色。
<SCRIPT language=vbscript event=DataPageComplete(dscei) for=MSODSC> <!-- ' 突出显示要脱销的项目。 Dim Sect Dim DSCConst Dim bandHTML ' 检查 Products GroupLevel 对象的 DataPage 对象引发的事件。 If (dscei.DataPage.GroupLevel.RecordSource = "Products") Then Set DSCConst = MSODSC.Constants Set Sect = dscei.DataPage.FirstSection ' 仔细检查事件的 DataPage 对象的 Section 对象。 Do ' 忽略标题部分。 If (Sect.Type = DSCCconst.sectTypeHeader) then Set bandHTML = Sect.HTMLContainer ' 有条件的设置库存单元的格式。 ' 如果库存单元少于或等于 20,则将文本更改为红色。 If (Cint(bandHTML.children("UnitsInStock").innerText) <= 20) Then bandHTML.children("UnitsInStock").style.color = "Red" bandHTML.children("UnitPrice").style.color = "Red" bandHTML.children("ProductName").style.color = "Red" End If End If Set Sect = Sect.NextSibling Loop Until (Sect Is nothing) End If --> </SCRIPT> |
这就是代码工作的方式。代码的第一行说明这是 MSODSC 对象的 DataPageComplete 事件。在编写 MSE 中 MSODSC 对象的事件处理程序时,由于所有的 MSODSC 对象事件都要求 DSCEventInfo 对象,因此必须提供一个参数将必需的 DSCEventInfo 对象传递到事件处理程序中。MSE 不自动提供该参数。因此,MSE 生成下列代码:
<script language=vbscript event=DataPageComplete for=MSODSC> <!-- --> |
<script language=vbscript event=DataPageComplete(dscei) for=MSODSC > <!-- --> |
接下来,单击特定的扩展按钮后,如果扩展部分包含一组与 Products 记录源相匹配的记录,将检索第一部分,如下列代码所示:
If (dscei.DataPage.GroupLevel.RecordSource = "Products") Then Set DSCConst = MSODSC.Constants Set Sect = dscei.DataPage.FirstSection |
If (Cint(bandHTML.children("UnitsInStock").innerText) <= 20) Then bandHTML.children("UnitsInStock").style.color = "Red" bandHTML.children("UnitPrice").style.color = "Red" bandHTML.children("ProductName").style.color = "Red" End If |
如果 UnitsInStock 字段的值小于或等于 20,代码将把 UnitsInStock、UnitPrice 和 ProductName 字段中的文本颜色更改为红色。代码的后几行继续遍历页面中的所有部分,重复更改颜色的过程。
有关更多的脚本示例,请参阅下列七篇由 Meyyammai Subramanian 撰写的文章:
Microsoft Office Data Source 控件
在本专栏的前一部分,我曾多次提到过 Microsoft Office Data Source 控件 (MSODSC)。在数据访问页中,MSODSC 用于连接到数据源、建立和执行针对这些数据源的命令以及将这些命令的结果检索和绑定到页上的元素。另外,MSODSC 还对用户当前正在操作的记录进行跟踪。对于更加复杂的带“条纹”的页,MSODSC 还将创建分层分组。
MSODSC 是一种 ActiveX 控件,运行时不具有可见的用户界面。创建新的数据访问页时,access 将 OBJECT 元素插入页底层 HTML中,该元素在页的 HEAD 元素中定义了 MSODSC。OBJECT 元素的 ID 属性总是设置为“MSODSC”。
MSODSC 集成了动态 HTML (DHTML) 对象模型和 ActiveX 数据对象 (ADO) 对象模型的功能。
若要查看所有可用的 MSODSC 方法、属性和事件,请在 MSE 的任意脚本块中键入 MSODSC,并在后面加“.”。
若要获得特定 MSODSC 方法、属性或事件的帮助,请在 MSE 中按 F1 或单击“帮助”菜单上的“Microsoft 脚本编辑器帮助”。类似于 Visual Basic 编辑器,在 MSE 中键入 MSODSC 方法、属性或事件,将光标置于关键字上并单击 F1,可以获得上下文帮助。
MSODSC 获得帮助的两个主要来源:
如果您是 Office 开发人员,那么 Office Web Components 参考对您来说应该是相当熟悉的,而 HTML 参考则必须经过深入使用后才能熟悉。
有关使用 MSODSC 的详细信息,请参阅 Mark Roberts 撰写的文章在数据访问页中编写数据源控件脚本(英文)。
在何处获得详细信息
为方便起见,我还把本专栏中提供的参考收集成列表:
注:Paul Cornell 是一名编辑,任职于 MSDN Online Office 开发人员中心和 Office 开发人员文档组。闲暇时间,他喜欢徒步旅行、和夫人玩多米诺骨牌以及给他十五个月大的女儿讲故事。
来 源 于:微软 MSDN