在Microsoft Office中使用ADO.NET3

时间:2010-01-30 09:36:53  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:望得到源代码以便完全控制处理过程。        以下解决方案可以用于任意启用 VBA 的应用程序,也可以通过 Microsoft Visual Basic 6.0 使用。要使用此解决方案,需要执行以下步骤:      从 XML Web Service 中检索 XML。   将 XML 分析到 VBA Array 对象中。   将数据插入 Office 应...
  正文: 扩展您自己的解决方案
    很明显,我们要再次提及需要将来自 XML Web Service 并已序列化的 ADO.NET 数据集作为 XML 应用到任意 Microsoft office/ target=_blank class=infotextkey>Office 应用程序中的问题。我们希望通过可以轻松处理这些数据的方法使用这些数据,我们还希望得到源代码以便完全控制处理过程。
  
    以下解决方案可以用于任意启用 vbA 的应用程序,也可以通过 Microsoft Visual Basic 6.0 使用。要使用此解决方案,需要执行以下步骤:
  
  从 XML Web Service 中检索 XML。
  将 XML 分析到 VBA Array 对象中。
  将数据插入 Office 应用程序。
    步骤 1:检索 XML
    首先,我们需要从 XML Web Service 中检索序列化为 XML 的 ADO.net 数据集。这在我们的解决方案中是最容易的一个步骤。从 Microsoft Office 应用程序(包括 word、Excel 和 Microsoft PowERPoint? 等)之一的 VBA 集成开发环境 (IDE) 中,我们需要为以下两个库设置引用:
  
  Microsoft Soap Type Library v3.0
  Microsoft XML v4.0
    如果您还没有上面这两个库,可以去免费下载。以下代码将运行 XML Web Service,并将结果检索到 MSXML IXMLDOMNodeList 对象中:
  
  Public Function ParseDataSet(ByRef xdlXSDFromSoapClient As Dim sc As MSSOAPLib30.SoapClient30
  Dim xdl As MSXML2.IXMLDOMNodeList
  Set sc = New MSSOAPLib30.SoapClient30
  sc.MSSoapInit "http://services.fabrikam.com/OWSISample/Order.asmx?wsdl"
  Set xdl = sc.OpenOrders
  
    首先,我们创建一个 SoapClient30 对象。该 SoapClient30 对象是包含在 Microsoft SOAP Toolkit 3.0 中的实用程序对象。它封装了所有连接到远程 XML Web Service 所必须的逻辑和通道,执行 Web 方法,并向客户返回 XML 信息。要做到这一点,必须将 XML Web Service 的 Web 服务说明语言 (WSDL) 文件的引用传递给 MSSoapInit 属性。这能够使 SoapClient30 对象知道可以使用何种服务和方法。一旦 SoapClient30 对象被初始化,我们便可以调用由 XML Web Service 提供的任意方法:
  
    Set xdl = sc.OpenOrders
    在我们的例子中,我们调用了 OpenOrders 方法,它可以返回在本文前半部分中看到的 XML 结果。Microsoft SOAP Toolkit 3.0 使这些变得很容易;它仅用了四行代码。请注意,XML Web Service 所回应的是 IXMLDOMNodeList 对象。IXMLDOMNodeList 对象是 MSXML 4 库中的对象,含有 XML 的片段,并被显示为 IXMLDOMNode 对象。这便是令人感兴趣的地方。IXMLDOMNodeList 对象包含两个 XML 片段的节点。第一个节点包含 XML 架构(定义数据结构和数据类型),第二个节点包含我们的实际数据。这对我们来说非常方便,现在我们只需两个节点对象便可以先分析 XML 的结构,然后从第二个节点中分析出数据。
  
    步骤 2:将 XML 分析到 VBA Array 对象中
    在讲述如何将 XML Web Service 返回的 XML 分析到数组中之前,我需要解释一下为什么要将数据分析到数组中,而不分析到某些其他类似 ADO Recordset 对象的内存内表示形式或 VBA 类型的结构中。最开始时,我打算支持其他内存内表示形式。我首先从数组开始,因为数组是支持 VBA 的应用程序中的共同特性。数组简单、快速,并且没有 ADO 之类的外部相关性。我推断在数组逻辑可以运行后,应该能够很容易地修改代码以满足更高的要求。但是事实是,数组原来非常灵活,并且可以游刃有余地满足我的所有需要。不仅如此,您可以清楚地发现通过修改这些代码还可以轻松地创建 ADO 记录集或其他东西。
  
    以下代码用于将 XML 分析到数组:
  
  IXMLDOMNodeList, _
  ByVal sTableName As String, _
  ByVal bReturnFieldHeaders As Boolean) As Variant
  Dim xdd As MSXML2.DOMDocument40
  Dim xdlStructure As MSXML2.IXMLDOMNodeList
  Dim xdlRows As MSXML2.IXMLDOMNodeList
  Dim lcntRows As Long
  Dim lctrRow As Long
  Dim lcntFields As Long
  Dim saFieldDefinitions() As String ' 用于存储字段名和字段 _
  ' 数据类型的数组。
  Dim lctrFieldDef As Long 《在Microsoft Office中使用ADO.NET3》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12644.html


关键字:

关于《在Microsoft Office中使用ADO.NET3》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td