如何对已经建立的结构树进行遍历用生成报表

来源:百度知道 编辑:UC知道 时间:2024/06/25 09:49:05
如何对已经建立的产品结构树进行遍历生成零部件清单报表

本人在Access中建了一个多表的数据库,且已经有了结构树生成的具体递归算法及程序,现在需要编一段程序实现零部件清单报表的生成,由于对VB中生成报表所需的控件不太熟悉,不知道具体语句的代码怎么写,所以想请各位高手帮忙写一下。
第3才是我要问的,也就是如何用程序实现。1、2我是给大家简单介绍一下。

1.多表数据库中的数据表结构如下:

自行车:表
项目代号 名称 有无子节点 数量
0b01 车头 1 1
0b02 车身 1 1
0b03 车轮 1 2

因为 车身 的 “有无子节点”是 1,所以是 部件,要再建一个 车身 表
车身:表
项目代号 名称 有无子节点 数量
0d01 支杆 1 1
0d02 车座 0 1
因为 支杆 的 “有无子节点”是 1,所以是 部件,下面是 支杆 表。车座 的 “有无子节点”是 0,所以是 零件,不需建表,是叶子节点。
支杆:表
项目代号 名称 有无子节点 数量
0e01 横梁 0 1
0e02 斜梁 0 2

2.生成结构树的程序的主要部分如下:

Dim root As Node

Private Sub Form_Load()
OpenConn
Set root = TreeView1.Nodes.Add(, , , "根节点名")
AddNodes "根节点名", root
End Sub

Public Sub AddNodes(TableName As String, TNode A

改了一下,数量在插入节点时计算

Dim root As Node

Private Sub Command1_Click()

MSFlexGrid1.Cols = 2
MSFlexGrid1.Rows = 1
MSFlexGrid1.TextMatrix(0, 0) = "名称"
MSFlexGrid1.TextMatrix(0, 1) = "数量"
AddRows root
End Sub

Private Sub Form_Load()
OpenConn
Set root = TreeView1.Nodes.Add(, , , "根节点名")
root.Tag = 1
AddNodes "根节点名", root
End Sub

Public Sub AddNodes(TableName As String, TNode As Node)
Dim pNode As Node
Dim rs As ADODB.Recordset
Set rs = OpenRecordset("select * from " & TableName)
Do While Not rs.EOF
Set pNode = TreeView1.Nodes.Add(TNode, 4, , rs!名称)
pNode.Tag = rs!数量 * TNode.Tag
If rs!有无子节点 Then
AddNodes rs!名称, pNode
End If
rs.MoveNext
Loop
TNode.Expanded = True
End Sub

Public Su