Это мой фрагмент кода, который полезен.Мой код 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, как упоминалось здесь .
Я создал приложение .NET, которое может генерироватьэти XML-файлы из простых строк кода, если кому-то захочется продвинуться вперед, аналогично перечисленному блогу, однако он обрабатывает дочерние наборы записей со связями.
EDIT 1 : Это прекрасно работает, если у вас есть схеманастройки без возврата данных.Насколько я могу судить, для их эффективного заполнения лучше написать код, который сначала загружает структуру, а затем заполнять ее из отдельных наборов записей (что медленнее!)
РЕДАКТИРОВАТЬ 2 : Это подход, который мы используем с заменой в .NET Interop.Первоначально рассматривал возможность извлечения XML из SQL и его синтаксического анализа при необходимости.Это может быть выкуплено обратно в DataSet и также проанализировано в целевом наборе записей, но тогда связь между таблицами в результирующем наборе данных должна быть установлена в коде, а не в одном месте в T-SQL с выводом XML.