请看我的代码VB treeview 报错:关键字不唯一,求教,谢谢
Call con
Rs.Open "select * from [kf]", Cnn, 3, 3
Do While Not Rs.EOF
If Trim(add.xm.text) = Rs.Fields("name") And Trim(add.jsn.text) = Rs.Fields("pcsn") Then
MsgBox "要添加的客户已存在,请勿重复添加!", vbInformation, "系统提示!"
add.tianjia.Enabled = False
add.xiugai.Enabled = True
add.shanchu.Enabled = False
add.beifen.Enabled = False
add.huifu.Enabled = False
Rs.Close
Cnn.Close
Exit Sub
End If
Rs.MoveNext
Loop
Rs.AddNew
Rs.Fields("name") = Trim(add.xm.text)
Rs.Fields("tel") = Val(add.dh.text)
Rs.Fields("phone") = Val(add.Combo1.text)
Rs.Fields("addr") = Trim(add.zz.text)
Rs.Fields("lei") = Trim(add.Combo2.text)
Rs.Fields("xpai") = Trim(add.Combo3.text)
Rs.Fields("xxing") = Trim(add.px.text)
Rs.Fields("xsn") = Trim(add.psn.text)
Rs.Fields("xdate") = DT1.Value
Rs.Fields("xbx") = DT2.Value
Rs.Fields("bd") = Trim(add.Combo4.text)
Rs.Fields("zpai") = Trim(add.jp.text)
Rs.Fields("xing") = Trim(add.jx.text)
Rs.Fields("pcsn") = Trim(add.jsn.text)
Rs.Fields("fs") = Trim(add.Combo6.text)
Rs.Fields("sdate") = DT3.Value
Rs.Fields("bdate") = DT4.Value
Rs.Fields("luser") = Trim(add.ldy.text)
Rs.Fields("lchk") = Trim(add.shr.text)
Rs.Update
MsgBox "客户信息添加成功", vbCritical, "系统提示!"
Rs.Close
Cnn.Close
Set Rs = Nothing
Set Cnn = Nothing
call tree_change
------------------------------
Public Sub tree_change()
Call con
Dim key, text As String
Dim nod As Node
key = "客户名单"
text = "客户名单"
With main.TreeView1
Set node1 = .Nodes.add(, , key, text, 1)
End With
asing = "select * from [kf]"
Rs.Open asing, Cnn, 3, 3
Do While Not Rs.EOF
key = Trim(Rs.Fields("name").Value)
text = Trim(Rs.Fields("name").Value)
With main.TreeView1
Set node2 = .Nodes.add(node1.Index, tvwChild, key, text, 1)
End With
Rs.MoveNext
Loop '循环语句
Rs.Close '循环完后 就关闭记录集
Cnn.Close
With main.TreeView1
.HotTracking = True
For i = 1 To .Nodes.Count
.Nodes(i).Expanded = False
Next i
End With
Set Rs = Nothing
Set Cnn = Nothing
End Sub
问题就出在调用tree_change 时关键字不唯一,不知道有什么办法能使关键字唯一,求教各位大哥,先谢谢了
[解决办法]
说明你数据库记录中用作Node的Key的字段有重复值啊.
这一般不是程序的错, 而是数据的错.
你可以在IDE中运行到错误时, 看一下出错语句的KEY的值, 然后到数据库看看到底是怎么回事.
[解决办法]
'打开记录集
Rs.Open "select * from [kf]", Cnn, 3, 3
'循环处理所有记录
Do While Not Rs.EOF
'如果记录集的name字段=输入值 and 记录集pcsn字段=输入值 then 数据重复
'注意这里,如果name字段=输入值 但是pcsn字段<>输入值,就不显示数据重复,就去添加.
'结果是,name字段在数据库可以重复,后面用name作为key,怎能不错
If Trim(add.xm.text) = Rs.Fields("name") And Trim(add.jsn.text) = Rs.Fields("pcsn") Then
MsgBox "要添加的客户已存在,请勿重复添加!", vbInformation, "系统提示!"
....
Rs.Close
Cnn.Close
Exit Sub
End If
Rs.MoveNext
Loop
Rs.AddNew
....
Rs.Update
MsgBox "客户信息添加成功", vbCritical, "系统提示!"