DataRecordsets.AddFromXML 方法 (Visio)

DataRecordset 对象添加到 DataRecordsets 集合,并使用以 XML 字符串形式提供的数据填充生成的数据记录集。

注意

此 Visio 对象或成员仅供 Visio Professional 2013 的授权用户使用。

语法

表达式AddFromXML (XMLStringAddOptionsName)

表达 返回 DataRecordsets 对象的表达式。

参数

名称 必需/可选 数据类型 说明
XMLString 必需 字符串 符合 Microsoft ActiveX 数据对象 (ADO) 经典 XML 架构并描述要导入的数据的 XML 字符串。
AddOptions 必需 Long 用于确定要添加的数据记录集的属性的选项。 VisDataRecordsetAddOptions 中的一个或多个枚举值的组合。 有关详细信息,请参阅“备注”。
Name 可选 字符串 将显示名称分配给要添加的 DataRecordset 对象。

返回值

DataRecordset

备注

对于 XMLString 参数,传递一个 XML 字符串,该字符串符合 ADO 经典 XML 架构,并且描述您要导入的数据。 在本主题后面的示例中显示了一个简单的 XML 字符串。

AddOptions 参数可以是 VisDataRecordsetAddOptions 枚举(在 Microsoft Visio 类型库中声明)中以下一个或多个值的组合。 默认值是零 (0),它指定不设置任何选项。

常量 Description
visDataRecordsetNoExternalDataUI 1 防止新数据记录集中的数据在“外部数据”窗口中显示。
visDataRecordsetNoAdvConfig 4 防止数据记录集在“配置刷新”对话框中显示。
visDataRecordsetDontCopyLinks 16 添加数据记录集,但不会剪切或复制形状数据链接。

分配这些值后,在 DataRecordset 对象的生存期内您不能对其进行更改。

Name 参数是一个可选字符串,您可以通过它为数据记录集分配显示名称。 如果您指定在 Visio UI 中显示“外部数据”窗口,您为此参数传递的名称将会出现在“外部数据”窗口中对应于所添加的数据记录集的选项卡上。

相比之下,与使用 AddAddFromConnectionFile 方法创建的数据记录集所不同的是,使用 AddFromXML 方法创建的数据记录集不与 DataConnection 对象关联。

此外,无论 DataRecordset.RefreshInterval 属性的设置如何,Visio 从不自动刷新使用 AddFromXML 方法创建的数据记录集。 若要刷新此类数据记录集中的数据,必须调用 DataRecordset.RefreshUsingXML 方法。

如果 AddFromXML 方法成功,它将执行以下操作:

  • 创建 DataRecordset 对象,并为其分配在 Name 参数中指定的名称。 如果未指定名称,Visio 会将作为数据源的数据库表的名称分配给数据记录集。

  • 将数据源的列的数据类型映射到等效的 Visio 数据类型,同时筛选结果以删除因没有等效的 Visio 数据类型而无法链接到 Visio 形状的数据源列。

  • 除非导入的数据已经包含有效的 Visio 数据行 ID,否则为数据记录集中的每一行分配行 ID。 有关 Visio 数据行 ID 的详细信息,请参阅 DataRecordset.GetDataRowIDs 主题。

示例

以下 Microsoft Visual Basic for Applications (VBA) 宏说明如何使用 AddFromXML 方法将 Visio 绘图连接到 ADO XML 字符串中包含的数据。

这里显示了一个 XML 字符串示例。 此字符串在被传递到 AddFromXML 方法时,会创建一个数据记录集,其中包含一个名为“Cities”的列和两个数据行(该列中的条目包括城市名称)。

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' 
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' 
xmlns:rs='urn:schemas-microsoft-com:rowset' 
xmlns:z='#RowsetSchema'> 
<s:Schema id='RowsetSchema'> 
<s:ElementType name='row' content='eltOnly' rs:updatable='true'> 
<s:AttributeType name='c1' rs:name='Cities' 
rs:number='2' rs:nullable='true' rs:maydefer='true' rs:write='true'> 
<s:datatype dt:type='string' dt:maxLength='255' rs:precision='0'/> 
</s:AttributeType> 
<s:extends type='rs:rowbase'/> 
</s:ElementType> 
</s:Schema> 
<rs:data> 
<z:row c1='Seattle' /> 
<z:row c1='Redmond' /> 
</rs:data> 
</xml>

在以下示例代码中,我们向 AddFromXML 方法传递一个包含数据的 XML 字符串的名称,还要传递另一个字符串的名称,该字符串中包含我们要为所创建的新数据记录集分配的显示名称。

Public Sub AddFromXML_Example() 
 
    Dim strXML As String 
    Dim strName As String 
    Dim vsoDataRecordset As Visio.DataRecordset 
 
    strXML = "<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'" + Chr(10) _ 
    & "xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'" + Chr(10) _ 
    & "xmlns:rs='urn:schemas-microsoft-com:rowset'" + Chr(10) _ 
    & "xmlns:z='#RowsetSchema'>" + Chr(10) _ 
    & "<s:Schema id='RowsetSchema'>" + Chr(10) _ 
    & "<s:ElementType name='row' content='eltOnly' rs:updatable='true'>" + Chr(10) _ 
    & "<s:AttributeType name='c1' rs:name='Cities'" + Chr(10) _ 
    & "rs:number='2' rs:nullable='true' rs:maydefer='true' rs:write='true'>" + Chr(10) _ 
    & "<s:datatype dt:type='string' dt:maxLength='255' rs:precision='0'/>" + Chr(10) _ 
    & "</s:AttributeType>" + Chr(10) _ 
    & "<s:extends type='rs:rowbase'/>" + Chr(10) _ 
    & "</s:ElementType>" + Chr(10) _ 
    & "</s:Schema>" + Chr(10) _ 
    & "<rs:data>" + Chr(10) _ 
    & "<z:row c1='Seattle'/>" + Chr(10) _ 
    & "<z:row c1='Redmond'/>" + Chr(10) _ 
    & "</rs:data>" + Chr(10) _ 
    & "</xml>" 
 
    strName = "City Names" 
 
    Set vsoDataRecordset = ThisDocument.DataRecordsets.AddFromXML(strXML, 0, strName) 
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。