- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0 |
在 Microsoft Access 的早期版本中,用户可以使用“另存为”对话框将某些 Access 对象转换为其他 Access 对象(例如,可以将窗体转换为报表)。也可以将 Access 对象导出为多种格式,包括文本、HTML、RTF 格式等等。然而,这些对象不是可扩展的。也就是说,不能访问或更改这些对象的特性和属性,而使之轻松应用于其他应用程序。
从 Access 2002 开始,您可以将 Access 对象导出为可扩展标记语言 (XML) 文件,使其更易于在应用程序之间共享。可以使用一个或两个 XML 文件导出 Access 数据表、窗体和报表:ReportML 文件(指定为 ObjectName_report.xml),用于描述数据表、窗体或报表的属性、格式和其他特性;和可选的数据文件 (ObjectName.xml)(如果选定将数据与对象相关联的选项)。此外,通过将可扩展样式表语言转换 (XSLT) 文件同这些 XML 文件一起使用,可以以程序化的方式将导出的 Access 对象转换为其他外观格式,重新排列数据或文档的结构,或动态排序和筛选数据,以便于在其他应用程序中使用此对象。
例如,通过使用 ReportML 和 XSLT 文件,转换后的 Access 对象在典型 Internet Explorer 浏览器视图中的显示效果与在 Access“打印预览”中的效果一样。此对象也可以转换为动态超文本标记语言 (DHTML)、数据访问页面、逗号分隔值文件、对特定编程接口的调用序列、PDF 文件或其他用作 Web 页的 HTML 类型的对象。此外,可以动态更改对象的结构,以便为不同的应用程序或设备(例如 Web 浏览器或手持型设备)提供不同的视图。
当前,要允许其他用户查看您的 Access 报表,他们必须创建此报表的硬拷贝,在本地安装 Access,或者使用与快照播放器类似的产品功能。通过使用报表的 ReportML 版本和 XSLT 文件,您可以将报表保存至 Web,任何人都可以使用浏览器来查看此报表,其效果就和在 Access 中的原始显示一样。
此外,可以从 Access 提供的 ReportML 文件开始,进一步描述您的对象以用于其他应用程序。因为它是用 XML 语法写成的,您可以通过向文件添加自己的元素和属性,为报表添加更多详情或细节,从而扩展和增强对象。此外,还可以添加脚本以增强对象的可扩展性,例如,根据观众或用于查看对象的浏览器类型来应用特定的格式或筛选。
什么是 ReportML?
ReportML 是基于 XML 的“标记语言”,它通过使用一系列的标记来表示对象的属性、事件代码和其他特性(例如记录源),从而描述 Access 数据表、窗体和报表。ReportML 文档是结构良好的 XML 文件,也就是说,此文档符合 XML 文档的最小要求(即,它包含单个根元素,有打开和关闭标记,没有交叉的标记,等等)。有关 XML、结构良好的 XML 文档和 XSLT 的详细信息及其相关术语,请搜索 Microsoft Developers Network (asp">MSDN) Web 站点。
ReportML 文档的结构
ReportML 文档包含两个主要的节:序言节和文档元素节。序言包含 XML 声明和文档类型定义 (DTD)(如果使用 DTD)。XML 声明的通常形式为 <?xml version="1.0" encoding="UTF-8"?>。可选的 DTD 定义并命名了可用于文档的元素、它们的出现次序、可以使用的元素和属性(有关这些将在后面详述)及其他文档特性。可以使用 XML 架构文档 (.xsd) 来替换 DTD 以指定 XML 文档的架构或布局。使用 XSD 文档代替 DTD 的优点是 XSD 使用 XML 语法。有关对 XML 数据使用文档类型声明和 XML 构架文档文件的详细信息,请参阅 asp">MSDN Web 站点。
文档元素节以 <RPTML> 元素(也称为根元素)开始;根元素指示了描述 Access 对象的其他元素、属性和数据的起始位置。
元素和属性标记提供的项目信息包括样式、分组级别信息、打印信息、控件信息和属性值。典型的元素由起始标记、元素数据和结束标记组成。属性通常作为名称-值对包含在元素起始标记中,提供有关元素的附加信息。元素和属性标记的常规形式为:
<START-TAG attribute="value">element data<END-TAG>
下表列出了 ReportML 文档中常用项目的标记类型。
对象 | 常用的标记类型 | 示例 |
---|---|---|
窗体或报表节(例如页眉、页脚) | 元素 | <SECTION> ... </SECTION> |
主要对象属性(例如可见性、可增高性、分组级别) | 元素 | <CAN-GROW>true</CAN-GROW>
<VISIBILITY>visible</VISIBILITY> |
支持属性信息(例如数据类型) | 属性 | <NAME type="last">Davolio</NAME> |
对象名称 ("id") 或对象类型(例如 Orders_Subreport) | 属性 | <REPORT id="Orders_Subreport">
<SECTION type="report_header"> |
ReportML 格式的 Access 窗体和子窗体示例
以下是一段 ReportML 文件,用于描述含有“Orders_Subreport”子窗体的“Orders”窗体。该示例说明如何使用标记来描述对象的属性和层次结构。请注意,Access 使用的标记已在“报表”对象上标准化,因此尽管该示例定位于窗体,标记仍引用了报表对象。
<!--序言节-->
<?xml version="1.0" encoding="UTF-8"?>
<!--以 RPTML 根元素开始的文档元素节-->
<RPTML>
<SYSTEM-SETTINGS>
<LOCALE>1033</LOCALE>
</SYSTEM-SETTINGS>
<!--由此开始实际的“Orders”窗体定义-->
<REPORT ID="Orders">
<TITLE>Orders</TITLE>
<LAYOUT>absolute</LAYOUT>
<OBJECT-TYPE>form</OBJECT-TYPE>
...
<!--打印机定义-->
<PRINTER-ROW-SPACING>0</PRINTER-ROW-SPACING>
<PRINTER-ORIENTATION>portrait</PRINTER-ORIENTATION>
...
<!--继续设置其他窗体属性-->
<FETCH-DEFAULTS>true</FETCH-DEFAULTS>
<MOVEABLE>false</MOVEABLE>
<ALLOW-DESIGN-CHANGES>false</ALLOW-DESIGN-CHANGES>
...
<!--描述记录源和连接字符串的属性-->
<RECORD-SOURCE>Orders Qry</RECORD-SOURCE><ID>Orders</ID>
<CONNECTION-STRING>PROVIDER=Microsoft.Jet.OLEDB.4.0;
DATA SOURCE=\\zaw-pro-1\mydocs2\frice\Northwind.mdb;
USERID=Admin;PASSWORD=;PERSIST SECURITY INFO=FALSE;
</CONNECTION-STRING>
<!--组件和节的全局样式定义-->
<STYLE id="Style0">
<BORDER-COLOR>#000000</BORDER-COLOR>
<BORDER-WIDTH>1px</BORDER-WIDTH>
...
<STYLE id="Style1">
...
</STYLE>
<!--不同窗体节的属性-->
<SECTION id="ReportHeader" type="report_header">
<BORDER-STYLE>none</BORDER-STYLE>
<BACKGROUND-COLOR>#008080</BACKGROUND-COLOR>
...
</SECTION>
<!--然后描述节内的控件-->
<REPORT-ITEM id="OrderID" type="text-box">
<CLASS>Style0</CLASS>
<BOUND-TO-HYPERLINK>false</BOUND-TO-HYPERLINK>
...
</REPORT-ITEM>
<REPORT-ITEM id="OrderID Label" type="label"
parent="OrderID">
<CLASS>Style1</CLASS>
<HEIGHT>0.177in</HEIGHT>
...
</REPORT-ITEM>
<CODE>
<!--窗体内部的代码由此开始
option compare database
Private Sub Report_Open (Cancel As Integer)
msgbox "对象已打开"
End Sub -->
</CODE>
<!--以 /REPORT 标记结束描述“Orders”窗体的节-->
</REPORT>
<!--由此开始“Orders_Subreport”子报表的定义-->
<REPORT ID="Orders_Subreport">
...
</REPORT>
</RPTML>
此示例说明了 ReportML 用于描述 Access 对象的某些原则:
对象以“树状视图”展示,首先描述报表对象的特性和其他属性,继之以报表中第一节的特性和其他属性、第一节的控件、然后是第二节,等等。
打印机对象信息存储为对象(数据表、报表、窗体)级别的标记集。
在节内,首先描述节的特性和属性,然后描述节中的所有控件。
ActiveX 控件在给定的节中存储为控件。需要写出 ActiveX 特定的属性及其内容的标记以及“包装控件”属性的标记。
所有给定标记的实际值均置于打开和关闭标记之间,而不写成标记的属性。属性仅限于对象的支持信息(例如对象名称、对象类型或数据类型)。
空属性不写出来,因此不含值的属性将被忽略。
子报表(或子窗体)嵌入在主报表的 ReportML 中;它们的描述方式与主报表完全相同。
某些标记用于描述非程序化地出现在 Access 中的项目,例如,z 顺序、子标签、子对象(选项组)、控件组等等。
子窗体和子报表在窗体和报表之后写出。
关于 ReportML 的其他信息
只要有可能,ReportML 中的 Access 属性便映射到类似的 HTML 属性,因此熟悉 HTML 文档的布局和元素的人也能了解 ReportML 文档。例如,ForeColor 映射到 Color 及 FontName = FontFamily。
同时,也采用了一些惯例以免无关的值和属性干扰 ReportML 文件。一般而言,输出到 ReportML 时,采用下列准则:
<STYLE ID="style1">
<BACKGROUND-COLOR>#ffffff</BACKGROUND-COLOR>
<FONT-STYLE>italic</FONT-COLOR>
...
</STYLE ID="style1">
<CONTROL>
<CLASS>style1</CLASS>
...
</CONTROL>
保存 ReportML 文件
在默认情况下,使用 ExportML 方法将数据表、窗体或报表导出到 XML 时,将创建 ReportML 文件 (ObjectName_report.xml)。
可以通过在 ExportXML 方法的 Otherflags 选项中设置合适的值来保存或维持 ReportML 文件。例如,以下示例代码将当前数据库中名为 Customers 的表导出为 XML。数据和架构作为单独的文件导出,架构为 XSD 格式。OtherFlags 标志后的值 32 用于维持该 ReportML 文件:
ExportXML _
ObjectType:=acExportTable, _
DataSource:="Customers", _
DataTarget:="Customers.xml", _
SchemaTarget:="CustomersSchema.xml", _
OtherFlags:="32"
有关 ExportXML 方法的详细信息,请参阅 Microsoft Visual Basic 编辑器中的帮助。
结论
正如您看到的那样,将数据表、窗体和报表导出为 ReportML 文件提供了一致的方法来用 XML 表示这些对象的特性和其他属性。这可以简化将这些对象及其包含的数据从一个应用程序移动至另一个应用程序的工作,同时提供了其他选项用于查看和重构 Access 数据。
有关 XML、XSLT 和相关的 XML 项目的详细信息,请参阅 MSDN Web 站点。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |