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