可以这样读xml数据,再发到报表里Sub loadxml() Dim Xdom As New DOMDocument Xdom.Load App.Path & "\config.xml" Dim Nodes As IXMLDOMNodeList Set Nodes = Xdom.documentElement.selectNodes("//site") 'MsgBox Nodes(1).selectSingleNode("id").Text For i = 0 To Nodes.length - 1 Title = CStr(Nodes(i).selectSingleNode("title").Text) id = CInt(Nodes(i).selectSingleNode("id").Text) MsgBox Title List1.AddItem Title, id Next End Sub
关键是 xml 格式谁决定,如果没有限制,有很方便的方法: 1)用 RecordSet 生成 xml Private Sub Command1_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset ... Set rs = cn.Execute("select...") rs.Save "C:\temp\1.xml", adPersistXML End Sub 2)用 xml 还原不依赖数据库的 RecordSet,可以直接作为报表的数据源使用 Private Sub Command2_Click() Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "C:\temp\1.xml" ... End Sub
Dim Xdom As New DOMDocument
Xdom.Load App.Path & "\config.xml"
Dim Nodes As IXMLDOMNodeList
Set Nodes = Xdom.documentElement.selectNodes("//site")
'MsgBox Nodes(1).selectSingleNode("id").Text
For i = 0 To Nodes.length - 1
Title = CStr(Nodes(i).selectSingleNode("title").Text)
id = CInt(Nodes(i).selectSingleNode("id").Text)
MsgBox Title
List1.AddItem Title, id
Next
End Sub
<?xml version="1.0" encoding="gb2312"?>
<!--数据总汇池-->
<DataPool>
<!--数据索引-->
<!--此处为数据样板-->
<site>
<id>0</id>
<title>t0</title>
</site>
<site>
<id>1</id>
<title>t1</title>
</site>
<site>
<id>2</id>
<title>t2</title>
</site>
</DataPool>
1)用 RecordSet 生成 xml
Private Sub Command1_Click()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
...
Set rs = cn.Execute("select...")
rs.Save "C:\temp\1.xml", adPersistXML
End Sub
2)用 xml 还原不依赖数据库的 RecordSet,可以直接作为报表的数据源使用
Private Sub Command2_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "C:\temp\1.xml"
...
End Sub