用的数据库是access的,想根据数据库查询结果建立一棵树,问题出在Key3 = mrc.Fields("学期") & mrc1.Fields("课程名"),其中Key3 = mrc.Fields("学期") 有值,mrc1.Fields("课程名")提示在对应所需名称和序数集合中未找到项目,数据库中确实有课程名这一属性列,学期是主码之一,课程名非主属性,调试将课程名换成学期就没错,而换成其他的列(主属性或非主属性)都出同样的错,程序如下:请高手们帮帮忙吧
    Dim cnn As New ADODB.Connection    
    Dim mrc As New ADODB.Recordset    
    Dim sql As String      '查询语句
     Dim kech As String
    Dim xueqi As String     
    Dim nod1 As Node                                                'nod1第一层结点
    Key1 = "课程管理"
    text1 = "课程管理"
    Set nod1 = tv1.Nodes.Add(, , Key1, text1)
    nod1.Tag = 1
    
userid = "003"
    sql = "select DISTINCT 学期 from 课程  where 教师号 = '" & userid & "'order by 学期 desc "
    cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb"
    cnn.Open cnn.ConnectionString
    mrc.Open sql, cnn.ConnectionString, adOpenKeyset, adLockOptimistic, adCmdText    
    If (mrc.EOF = True) Then
       GoTo wuke
       Else
         ' mrc.MoveFirst    
        Do
         Dim nod2 As Node
         Key2 = mrc.Fields("学期")
         text2 = mrc.Fields("学期")
         Set nod2 = tv1.Nodes.Add(Key1, 4, Key2, text2)
         nod2.Tag = 2
           '查询每学期课程并建立课程节点
           Dim cnn1 As New ADODB.Connection
           Dim mrc1 As New ADODB.Recordset
           Dim sql1 As String
          
           sql1 = "select * from 课程  where 教师号 = '" & userid & "'and  学期 = '" & Key2 & "' "
           cnn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb"
           cnn1.Open cnn.ConnectionString
           mrc1.Open sql, cnn.ConnectionString, adOpenKeyset, adLockOptimistic, adCmdText
           Dim nod3 As Node
           Do
           Debug.Print mrc1.RecordCount
            Key3 = mrc.Fields("学期") & mrc1.Fields("课程名")
            text3 = mrc1.Fields("课程名") & "课程"
            Set nod3 = tv1.Nodes.Add(Key2, , Key3, text3)
            nod3.Tag = 3
            Dim nod4 As Node
            key4 = mrc.Fields("学期") & mrc1.Fields("课程名") & "教学日历"
            Text4 = "教学日历"
            Set nod4 = tv1.Nodes.Add(Key3, , key4, Text4)
            key4 = mrc.Fields("学期") & mrc1.Fields("课程名") & "成绩"
            Text4 = "成绩"
            Set nod4 = tv1.Nodes.Add(Key3, , key4, Text4)
            nod4.Tag = 4            mrc1.MoveNext
            Loop Until mrc1.EOF = True           
         mrc.MoveNext
        Loop Until mrc.EOF = True
  End If
 mrc.Close
 cnn.Close
End Sub

解决方案 »

  1.   

    你改过字段名称为英文了?还这样?
    我记得ACCESS中,用中文作字段名偶然会有奇怪现象,原因不明...当然也有可能是我自己的原因,反正现在不用中文作字段名了.....
    反正你这个提示“在对应所需名称和序数集合中未找到项目”,问题肯定在字段名称上,仔细检查下,当然也有可能你弄错了表名.....
      

  2.   

    改过了不行,我觉得可能和mrc有关系,因为出错的地方只有改为“学期”没问题,其他字段则不可以,晕阿