VB+ACCESS
请帮我看以下这个程序,它总是在*处报错“未发现元素”数据库内容如下:公司表:
字段1:公司(无重复)
字段2:ID(自动编号)部门表:
字段1:部门(有重复)
字段2:公司(从公司表导入)
字段3:ID(自动编号)班组表:
字段1:班组(有重复)
字段2:公司(从公司表导入)
字段3:部门(从部门表导入)
字段4:ID(自动编号)职员表:
字段1:姓名(有重复)
字段2:公司(从公司表导入)
字段3:部门(从部门表导入)
字段4:班组(从班组表导入)
字段5:ID(自动编号)Private Sub Form_Activate()
  DaForm.Icon = LoadPicture(App.Path & "\picture\title.ico")
  DaForm.Caption = "人事资源档案浏览       " & Date  
  
  Set RsDa = New ADODB.Connection   '[人事档案]数据库实例化
  Set gsB = New ADODB.Recordset   '[公司]表实例化
  Set bmB = New ADODB.Recordset   '[部门]表实例化
  Set bzB = New ADODB.Recordset   '[班组]表实例化
  Set zyB = New ADODB.Recordset   '[档案]表实例化
  
  RsDa.Provider = "microsoft.jet.oledb.4.0"
  RsDa.Open "data source=" & App.Path & "\data\RSDA.mdb"    '绑定数据库
  
  gsB.Open "公司表", RsDa, adOpenDynamic, adLockOptimistic
  bmB.Open "部门表", RsDa, adOpenDynamic, adLockOptimistic
  bzB.Open "班组表", RsDa, adOpenDynamic, adLockOptimistic
  zyB.Open "职员表", RsDa, adOpenDynamic, adLockOptimistic
  
  Dim nodX As Node
  Dim I As Integer
  Dim J As Integer
  I = 1
  J = 2
  
  gsB.MoveFirst
  Do Until gsB.EOF
    Set nodX = daTreeView.Nodes.Add(, , gsB.Fields(0).Value, gsB.Fields(0).Value)         
    
    bmB.MoveFirst
    Do Until bmB.EOF
      If gsB.Fields(0).Value = bmB.Fields(1).Value Then
        Set nodX = daTreeView.Nodes.Add(gsB.Fields(0).Value, tvwChild, Chr$(Asc(bmB.Fields(0).Value) + Asc(I)), bmB.Fields(0).Value)
      End If
      
      bzB.MoveFirst
      Do Until bzB.EOF
        If gsB.Fields(0).Value = bzB.Fields(1).Value And bmB.Fields(0).Value = bzB.Fields(2).Value Then
          Set nodX = daTreeView.Nodes.Add(Chr$(Asc(bmB.Fields(0).Value) + Asc(I)), tvwChild, Chr$(J), bzB.Fields(0).Value)
        End If
        
        zyB.MoveFirst
        Do Until zyB.EOF
          If gsB.Fields(0).Value = zyB.Fields(1).Value And bmB.Fields(0).Value = zyB.Fields(2).Value And bzB.Fields(0).Value = zyB.Fields(3).Value Then
*此处报错  Set nodX = daTreeView.Nodes.Add(Chr$(J), tvwChild, , zyB.Fields(0).Value)
          End If          
          zyB.MoveNext
        Loop        J = J + 1
        bzB.MoveNext
      Loop
      
      bmB.MoveNext
      I = I + 1
    Loop
    
    gsB.MoveNext
  Loop     
      
End Sub

解决方案 »

  1.   

    treeview节点的关键字不允许为数字开头的,所以你的Chr$(J)不对。
      

  2.   

    建议:
    将树结点改为
    公司:
    "A" & ID部门:
    "B" & ID班组:
    "C" & ID职员:
    "D" & ID
      

  3.   

    TREEVIEW的节点关键字不能为数字开头的字符串,所以不能用CHR$(J)来做关键字,你可以这样:
    Set nodX = daTreeView.Nodes.Add("zyB" & Chr$(J), tvwChild, , zyB.Fields(0).Value)
    或:
    Set nodX = daTreeView.Nodes.Add(Chr$(Asc(bmB.Fields(0).Value) + Asc(I)) & "-" & Chr$(J), tvwChild, , zyB.Fields(0).Value) '用部门表的关键字加Chr$(J)做为关键字。
      

  4.   

    我改了,但还是报错!
    “未发现元素”
    为什么呀?谢谢!*此处报错  Set nodX = daTreeView.Nodes.Add("C" & bzb.fields(4), tvwChild, , zyB.Fields(0).Value)
      

  5.   

    gsB.Open "公司表", RsDa, adOpenDynamic, adLockOptimistic
    bmB.Open "部门表", RsDa, adOpenDynamic, adLockOptimistic
    bzB.Open "班组表", RsDa, adOpenDynamic, adLockOptimistic
    zyB.Open "职员表", RsDa, adOpenDynamic, adLockOptimistic这样对吗??????????我怎么感觉不对呢?"公司表"  应该是一条 SQL语句 ,下面的也一样 , 或者 adLockOptimistic 这个参数,应该是绑定的表这个参数是不对的~ 是一个adTable..... 之类的参数,我身边没有VB,具体的也忘了,反正就是这个意思~
      

  6.   

    按照上面的程序,只要ACCESS库中的数据不重复,就没问题。
    但在现实中,这些数据很可能会重复,
    谁能帮我改改呀?
    谢谢!