MSDatashape 被弃用
MSDatashape being deprecated
在以下微软文档中:-
正在删除此功能,建议使用 XML。有没有人这样做过?我想知道它们是什么意思,就使用 XML 加载 MSDataShape 的结构而言,还是仅使用 XML 个对象?
TIA
我相信这是指 T-SQL 的 FOR XML 子句,它执行与 MSDataShape 相同的工作,因为它 returns 分层嵌套数据。
将您的 MSDataShape 查询移植到 FOR XML
查询并更改客户端以解析结果而不是使用 MSDataShape OLEDB 提供程序。
在客户端,SAX 或拉式解析最适合移植以前使用 MSDataShape 的代码(它也有一个基于移动记录游标的模型)。
这是我的一些有用的代码。我的 MSDataShape 代码仍然有效,因此我建议使用它来生成您的 XML 作为模板,然后使用它继续加载它们:-
Dim objShapeMaker As clsShapeMaker
Dim rsoTemp As ADODB.Recordset
Dim strXMLTemplate As String
' Template file
strXMLTemplate = "C:\Temp\Template_GI.xml"
' Create the MSDataShape and save it to XML
Set rsoTemp = objShapeMaker.CreateGI()
rsoTemp.Save strXMLTemplate, adPersistXML
' Now we have the XML in a file going forward, load it in my recordset
Set rsoTemp = New ADODB.Recordset
rsoTemp.Open strXMLTemplate, , , , adCmdFile
' Cleanup
Set rsoTemp = Nothing
Set objShapeMaker = Nothing
如果您不喜欢生成 XML 模板文件进行维护的想法,您可以通过 .NET 执行此操作并将其公开给 COM 以在您的 VB6/VBA 应用程序中使用,如前所述 here.
我制作了一个 .NET 应用程序,它可以从简单的代码行生成这些 XML 文件,如果任何人想要继续前进,它类似于列出的博客,但是它处理具有关系的子记录集。
编辑 1:如果您在不返回数据的情况下设置了架构,这将非常有用。据我所知,为了有效地填充这些,最好先编写代码来加载结构,然后再从单独的记录集中填充它(这样更慢!)
编辑 2:这是我们在 .NET Interop 中进行替换所采用的方法。最初考虑从 SQL 引入 XML 并根据需要解析它。这可以买回一个 DataSet 并且也被解析到目标记录集中,但是结果数据集中的表之间的关系需要在代码中设置而不是 T-SQL 中的一个地方 XML 输出.
在以下微软文档中:-
正在删除此功能,建议使用 XML。有没有人这样做过?我想知道它们是什么意思,就使用 XML 加载 MSDataShape 的结构而言,还是仅使用 XML 个对象?
TIA
我相信这是指 T-SQL 的 FOR XML 子句,它执行与 MSDataShape 相同的工作,因为它 returns 分层嵌套数据。
将您的 MSDataShape 查询移植到 FOR XML
查询并更改客户端以解析结果而不是使用 MSDataShape OLEDB 提供程序。
在客户端,SAX 或拉式解析最适合移植以前使用 MSDataShape 的代码(它也有一个基于移动记录游标的模型)。
这是我的一些有用的代码。我的 MSDataShape 代码仍然有效,因此我建议使用它来生成您的 XML 作为模板,然后使用它继续加载它们:-
Dim objShapeMaker As clsShapeMaker
Dim rsoTemp As ADODB.Recordset
Dim strXMLTemplate As String
' Template file
strXMLTemplate = "C:\Temp\Template_GI.xml"
' Create the MSDataShape and save it to XML
Set rsoTemp = objShapeMaker.CreateGI()
rsoTemp.Save strXMLTemplate, adPersistXML
' Now we have the XML in a file going forward, load it in my recordset
Set rsoTemp = New ADODB.Recordset
rsoTemp.Open strXMLTemplate, , , , adCmdFile
' Cleanup
Set rsoTemp = Nothing
Set objShapeMaker = Nothing
如果您不喜欢生成 XML 模板文件进行维护的想法,您可以通过 .NET 执行此操作并将其公开给 COM 以在您的 VB6/VBA 应用程序中使用,如前所述 here.
我制作了一个 .NET 应用程序,它可以从简单的代码行生成这些 XML 文件,如果任何人想要继续前进,它类似于列出的博客,但是它处理具有关系的子记录集。
编辑 1:如果您在不返回数据的情况下设置了架构,这将非常有用。据我所知,为了有效地填充这些,最好先编写代码来加载结构,然后再从单独的记录集中填充它(这样更慢!)
编辑 2:这是我们在 .NET Interop 中进行替换所采用的方法。最初考虑从 SQL 引入 XML 并根据需要解析它。这可以买回一个 DataSet 并且也被解析到目标记录集中,但是结果数据集中的表之间的关系需要在代码中设置而不是 T-SQL 中的一个地方 XML 输出.