0 0
想用TreeView控件实现查询~可以展开子节点~(图书类别,下面有三个子类)
之前看了几个相关文章~但是还是对代码着块不太懂 ~
下面是自己弄的~但是一直在报错~ VB实时错误'3265'(当时看一篇文章说的是在出错的地方加上On Error Resume Next,但是加上这个后子节点不能显示相应数据~)
下面是主要代码~
Private Sub Form_Load()
Dim strSQL As String
'设置TreeView1属性
TreeView1.LineStyle = 0 '在兄弟节点和父节点之间显示线
'树状外观包含全部元素
'建立名称为"图书类别"的父节点
Set nodx = TreeView1.Nodes.Add(, , "图书类别", "图书类别")
'打开数据库
DBCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data\BookShop.mdb;Persist Security Info=False"
DBCn.Open
strSQL = "select * from Cate"
DBRec.Open strSQL, DBCn, adOpenDynamic, adLockOptimistic '打开Cate表
If DBRec.EOF Then Exit Sub '如果数据库Cate表为空,则退出当前窗体
DBRec.MoveFirst
intX = 1 'strX数组下标
'添加商品类型的子节点
Do While DBRec.EOF = False
strX(intX) = DBRec.Fields("分类名称")
Set nodx = TreeView1.Nodes.Add("图书类别", tvwChild, "Ware" & intX, DBRec.Fields("分类编号") & strX(intX))
intX = intX + 1
' -------------------------这点缺点东西,高手帮忙补上------------------------
DBRec.MoveNext
Loop
DBRec.Close '关闭Cate表
DBCn.Close '关闭数据库
TreeView1.Nodes(1).Expanded = True '默认展开子节点
'调用初始列表
ms_db ("图书类别")
End Sub
想用TreeView控件实现查询~可以展开子节点~(图书类别,下面有三个子类)
之前看了几个相关文章~但是还是对代码着块不太懂 ~
下面是自己弄的~但是一直在报错~ VB实时错误'3265'(当时看一篇文章说的是在出错的地方加上On Error Resume Next,但是加上这个后子节点不能显示相应数据~)
下面是主要代码~
Private Sub Form_Load()
Dim strSQL As String
'设置TreeView1属性
TreeView1.LineStyle = 0 '在兄弟节点和父节点之间显示线
'树状外观包含全部元素
'建立名称为"图书类别"的父节点
Set nodx = TreeView1.Nodes.Add(, , "图书类别", "图书类别")
'打开数据库
DBCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data\BookShop.mdb;Persist Security Info=False"
DBCn.Open
strSQL = "select * from Cate"
DBRec.Open strSQL, DBCn, adOpenDynamic, adLockOptimistic '打开Cate表
If DBRec.EOF Then Exit Sub '如果数据库Cate表为空,则退出当前窗体
DBRec.MoveFirst
intX = 1 'strX数组下标
'添加商品类型的子节点
Do While DBRec.EOF = False
strX(intX) = DBRec.Fields("分类名称")
Set nodx = TreeView1.Nodes.Add("图书类别", tvwChild, "Ware" & intX, DBRec.Fields("分类编号") & strX(intX))
intX = intX + 1
' -------------------------这点缺点东西,高手帮忙补上------------------------
DBRec.MoveNext
Loop
DBRec.Close '关闭Cate表
DBCn.Close '关闭数据库
TreeView1.Nodes(1).Expanded = True '默认展开子节点
'调用初始列表
ms_db ("图书类别")
End Sub
Dim DBCn As New ADODB.Connection
Dim DBRec As New ADODB.Recordset '打开Cate表
Dim myConn As ADODB.Connection
Dim myRs As ADODB.Recordset '打开Book表
Dim nodx As Node
Dim intX As Integer
Dim intY As Integer
Dim intZ As Integer
Dim intU As Integer
Dim bolTF As Integer
Dim strX(1 To 200) As String
Dim strY(1 To 200) As String
Dim str As String'主要代码,但是很不成熟 - -Private Sub Form_Load()
Dim strSQL As String
'设置TreeView1属性
TreeView1.LineStyle = 0 '在兄弟节点和父节点之间显示线
'树状外观包含全部元素
'建立名称为"图书类别"的父节点
Set nodx = TreeView1.Nodes.Add(, , "图书类别", "图书类别")
'打开数据库
DBCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data\BookShop.mdb;Persist Security Info=False"
DBCn.Open
strSQL = "select * from Cate"
DBRec.Open strSQL, DBCn, adOpenDynamic, adLockOptimistic '打开Cate表
If DBRec.EOF Then Exit Sub '如果数据库Cate表为空,则退出当前窗体
DBRec.MoveFirst
intX = 1 'strX数组下标
'添加商品类型的子节点
Do While DBRec.EOF = False
strX(intX) = DBRec.Fields("分类名称")
Set nodx = TreeView1.Nodes.Add("图书类别", tvwChild, "Ware" & intX, DBRec.Fields("分类编号") & strX(intX))
intX = intX + 1
DBRec.MoveNext
Loop DBRec.Close '关闭Cate表
DBCn.Close '关闭数据库
TreeView1.Nodes(1).Expanded = True '默认展开子节点
'调用初始列表
ms_db ("图书类别")
End Sub
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) 'Treeview1_NodeClick事件
str = Node.Text
ms_db (str) '触发单击事件并通过调用ms_db函数显示相应的列表
End SubFunction ms_db(strss As String) As Boolean
Dim mystr As String
Dim introw As Integer
Dim inthigh As Integer
Set myConn = New ADODB.Connection
Set myRs = New ADODB.Recordset
myConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Data\BookShop.mdb;Persist Security Info=False"
myConn.Open
mystr = "select * from Book"
myRs.Open mystr, myConn, adOpenStatic, adLockReadOnly
myRs.MoveFirst
With MSFlexGrid1
.RowHeight(0) = 500
.ColWidth(0) = 300
.ColWidth(1) = 1200
.ColWidth(2) = 3000
.ColWidth(3) = 1000
.ColWidth(4) = 1500
.ColWidth(5) = 1500
.ColWidth(6) = 900
.ColWidth(7) = 900
MSFlexGrid1.TextMatrix(0, 1) = "图书编号"
MSFlexGrid1.TextMatrix(0, 2) = "图书名称"
MSFlexGrid1.TextMatrix(0, 3) = "图书类型"
MSFlexGrid1.TextMatrix(0, 4) = "作者"
MSFlexGrid1.TextMatrix(0, 5) = "出版社"
MSFlexGrid1.TextMatrix(0, 6) = "价格"
MSFlexGrid1.TextMatrix(0, 7) = "数量"
End With
Select Case strss
Case "10计算机"
MSFlexGrid1.Clear
introw = 1
MSFlexGrid1.Rows = 42
For inthigh = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.RowHeight(inthigh) = 300
Next
bolTF = ms_db1(introw, "日化类")
Exit Function
Case "11数学"
introw = 1
MSFlexGrid1.Rows = 50
For inthigh = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.RowHeight(inthigh) = 300
Next
bolTF = ms_db1(introw, "数学")
Exit Function
Case "12文学"
MSFlexGrid1.Clear
introw = 1
MSFlexGrid1.Rows = 70
For inthigh = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.RowHeight(inthigh) = 300
Next
bolTF = ms_db1(introw, "文学")
Exit Function
Case "图书类别"
introw = 1
MSFlexGrid1.Rows = 155
For inthigh = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.RowHeight(inthigh) = 300
Next
Do While myRs.EOF = False
MSFlexGrid1.TextMatrix(introw, 1) = myRs.Fields("图书编号").Value
MSFlexGrid1.TextMatrix(introw, 2) = myRs.Fields("图书名称").Value
MSFlexGrid1.TextMatrix(introw, 3) = myRs.Fields("图书类型").Value
MSFlexGrid1.TextMatrix(introw, 4) = myRs.Fields("作者").Value
MSFlexGrid1.TextMatrix(introw, 5) = myRs.Fields("出版社").Value
MSFlexGrid1.TextMatrix(introw, 6) = myRs.Fields("价格").Value
MSFlexGrid1.TextMatrix(introw, 7) = myRs.Fields("数量").Value
myRs.MoveNext
introw = introw + 1
Loop
myRs.MoveFirst
Exit Function
End Select
ms_db = True
End FunctionFunction ms_db1(introw As Integer, str As String) As Boolean
Do While myRs.EOF = False
' On Error Resume Next If (myRs.Fields("分类编号").Value = str) = True Then
MSFlexGrid1.TextMatrix(introw, 1) = myRs.Fields("图书编号").Value
MSFlexGrid1.TextMatrix(introw, 2) = myRs.Fields("图书名称").Value
MSFlexGrid1.TextMatrix(introw, 3) = myRs.Fields("图书类型").Value
MSFlexGrid1.TextMatrix(introw, 4) = myRs.Fields("作者").Value
MSFlexGrid1.TextMatrix(introw, 5) = myRs.Fields("出版社").Value
MSFlexGrid1.TextMatrix(introw, 6) = myRs.Fields("价格").Value
MSFlexGrid1.TextMatrix(introw, 7) = myRs.Fields("数量").Value
introw = introw + 1
End If
myRs.MoveNext
If introw > MSFlexGrid1.Rows Then
Exit Do
End If
Loop
myRs.MoveFirst
With MSFlexGrid1
.RowHeight(0) = 500
.ColWidth(0) = 300
.ColWidth(1) = 1200
.ColWidth(2) = 3000
.ColWidth(3) = 1000
.ColWidth(4) = 1500
.ColWidth(5) = 1500
.ColWidth(6) = 900
.ColWidth(7) = 900
MSFlexGrid1.TextMatrix(0, 1) = "图书编号"
MSFlexGrid1.TextMatrix(0, 2) = "图书名称"
MSFlexGrid1.TextMatrix(0, 3) = "图书类型"
MSFlexGrid1.TextMatrix(0, 4) = "作者"
MSFlexGrid1.TextMatrix(0, 5) = "出版社"
MSFlexGrid1.TextMatrix(0, 6) = "价格"
MSFlexGrid1.TextMatrix(0, 7) = "数量" End With
End Function
'添加商品类型的子节点
Do While DBRec.EOF = False
strX(intX) = DBRec.Fields("分类名称")
Set nodx = TreeView1.Nodes.Add("图书类别", tvwChild, "Ware" & intX, DBRec.Fields("分类编号") & strX(intX))
intX = intX + 1
' -------------------------这点缺点东西,高手帮忙补上------------------------
DBRec.MoveNext
Loop
DBRec.Close '关闭Cate表
DBCn.Close '关闭数据库就是因为这点缺行代码~所以导致后面If (myRs.Fields("分类编号").Value = str) = True Then 出现3265错误希望朋友来改正~