我将从场景开始:
为了实现这一点,我创建了一个连接到Web服务的DLL,并以下列格式创建了一个xml(从MSDN支持中检索到):
Dim RS As ADODB.Stream
Set RS = New ADODB.Stream
RS.Open
RS.WriteText XML 'This have the XML string
RS.Position = 0
Dim recset As ADODB.Recordset
Set recset = New ADODB.Recordset
recset.Open RS
RS.Close
Set RS = Nothing
此xml作为字符串返回到VB 6,我使用以下代码段将其转换为ADODB.Recordset对象:
<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='Column2' rs:number='1'>
<s:datatype dt:type='string' dt:maxLength='4294967295' rs:long='true'/>
</s:AttributeType><s:AttributeType name='Column3' rs:number='2'>
<s:datatype dt:type='string' dt:maxLength='4294967295' rs:long='true'/>
</s:AttributeType>
</s:Schema>
<rs:data>
<z:row Column2 = "ABC" Column3 = "DEF"/>
<z:row Column2 = "JKL" Column3 = "MNO"/>
</rs:data>
</xml>
现在,这个执行得很好但是当我尝试使用Column1时,我得到一些关于某些缺失列的运行时错误。当我检查记录集时,将其转换为XML进行比较,我得到了这个:
.sln
出于某种原因,它正在从xml中删除第一列,但是将其取值并将其用于其余列。我试图添加一个虚拟列,但它不起作用。我添加了一个ID列,但它没有用。
关于为什么会发生这种情况的任何想法?此记录集用于填充数据网格视图。有没有可用于从XML字符串加载数据的ADO Recordset的VB 6对象?