我想实现这样一个功能,我有一个XML文件格式如下
<Field  cnName="帐号"  fieldType="varchar" fieldLen="40" fieldScale="" ></Field>
<Field  cnName="账户名称" fieldType="varchar" fieldLen="80" fieldScale="" ></Field>
<Field  cnName="部门  "  fieldType="varchar" fieldLen="4"  fieldScale="" ></Field>
<Field  cnName="柜员组 " fieldType="char" fieldLen="2"  fieldScale=""></Field>
 
cnName= 字段名称 fieldType=字段类型 fieldLen=字段长度 fieldScale=小数点的位数我想把XML的各个字段属性读入保存到数组中,然后把数组作为参数传递给Activex DLL中函数,VB通过调用该函数,把各个字段成一个模板(只要把字段一次传给该函数的参数即可)DLL名称为makerdf.dll 其中类为 IdeaRDF 
函数为AppendField(name As String,desc As String, vartype As Integer, Length As Integer,  dec As Integer, impliedDec As Boolean,  parameter As String))
name //字段名称> 
desc  //字段说明> 
vartype   // 1-字符 2-数字 5-日期 时间 0-无效类型> 
offset //偏移 固定为0> 
length //长度> 
dec /小数位数> impliedDec //如果源数据包括小数位取false 不包括取true> 
parameter //格式掩码 如日期型的格式“年年年年月月日日”我写的程序如下:(只写了读入XML,和引用DLL部分,调用部分麻烦各位大师帮忙)
程序在引入DLL部分报错了,就是Activex 部件无法创建对象
Dim mrdll As IdeaRDF
Private MyObj As Object'这个函数用来读取xml文件中的字段属性Private Function GetFields(xmlFile As String) As String
Dim oXmlDoc As DOMDocument
Dim oXmlNodes As IXMLDOMNodeList
Dim i As Long
Dim j As Long
Dim NodeLength As Long
Dim FieldName() As String
Dim FieldType() As String
Dim FieldLen() As Long
Dim FieldDec() As Long
Set oXmlDoc = New DOMDocument
oXmlDoc.Load xmlFile
Set oXmlNodes = oXmlDoc.documentElement.selectNodes(".//Field") 'Field集合
NodeLength = oXmlNodes.Length - 1
ReDim FieldName(NodeLength)
ReDim FieldType(NodeLength)For i = 0 To NodeLength
FieldName(i) = oXmlNodes.Item(i).Attributes(1).Text '字段名称
FieldType(i) = oXmlNodes.Item(i).Attributes(2).Text '字段类型
'循环Field集合 , Attributes(1).text是一个Field中第二个属性的值,Attributes(2).text是一个Field中第三个属性的
Next i'调用DLL中的AppendField
Set oXmlNodes = Nothing
Set oXmlDoc = Nothing
End FunctionPrivate Sub Command1_Click()Dim fileName As String '文件Dim sXml As String
Dim Stype As StringDim sTxt As String
Dim hFile As Long'获取xml中的字段名称
fileName = "d:\KNA_DPAC_20100308.xml"End Sub
Private Sub Form_Load()Set MyObj = CreateObject("makerdf.IdeaRDF")
End Sub

解决方案 »

  1.   

    CreateObject("makerdf.IdeaRDF") 这个不行啊 
    看一下 IdeaRDF的属性 按F4, 属性是private吗  
    另外编译好注册一下regsrv32
      

  2.   

    先声明例如:Public Declare AppendField Lib "makerdf" Alias "IdeaRDF"(name As String,desc As String, vartype As Integer, Length As Integer, dec As Integer, impliedDec As Boolean, parameter As String))
     
      

  3.   

    CreateObject("makerdf.IdeaRDF"),成功调用的前提是目标库是已经在本机注册好了的.