BOM

T315608 2004-05-05 03:03:38
有这样的一个产品BOM,在数据库中设计怎样的表才便于将它加载到Treeview控件中及怎样的vb语句将它加载到treeview中?thanks!

A(产品)_|---b|----d-------|--g
| |____e |__h
|
|
|___c|----d-------|--g
| |__h
|
|____f-------|-d----|--g
| |__h
|__i
|__j
...全文
43 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumylove1234 2004-05-05
  • 打赏
  • 举报
回复
我的不是用树形,不过原理一样.
且数形比这个要简单.
wumylove1234 2004-05-05
  • 打赏
  • 举报
回复
同意用递归.这样编号全由用户自已定义.
我也刚学会.给你我程序中的代码!
Public Function checkBH(m_BH As String, m_BiaoMing As String) As Boolean ' 检测是否编号重复
Dim msgStr As String
tmpBiaoMing = m_BiaoMing
msgStr = ""
ReDim tmp(0)
GetChongFu m_BH, tmpBiaoMing '具体检测的过程
If UBound(tmp) > 0 Then '如果修改了数组的维数,则也就是说明有重号
For i = UBound(tmp) To 1 Step -1 '连接数组中的各维
msgStr = msgStr & "\" & tmp(i)
Next
MsgBox "此编号被:'" & msgStr & "'占用!", vbOKOnly + vbInformation, App.title
checkBH = False
Else '没变占用
checkBH = True
'MsgBox "OK"
End If
End Function

Private Sub GetChongFu(m_BH As String, m_BiaoMing As String) '检测是否有重号,有则保存名称
Dim Sqlstring As String
Dim Rst As ADODB.Recordset
Set Rst = New ADODB.Recordset
Dim m_ParentBH As String
Sqlstring = "select * from " & m_BiaoMing & " where BianHao='" & m_BH & "'"
Set Rst = ExecuteSQL(Sqlstring)
If Rst.EOF = False Then
ReDim Preserve tmp(UBound(tmp) + 1)
tmp(UBound(tmp)) = Rst!mingcheng
GetChongFu Rst!parentbh, tmpBiaoMing '递归调用
End If
Set Rst = Nothing
End Sub
华芸智森 2004-05-05
  • 打赏
  • 举报
回复
对于些类问题,我一直在使用递归的方式解决。我觉得递归在编程上思路简单。而且,效率也不算低。

父编号 自己的编号 名称
PID CID NAME
taosihai1only 2004-05-05
  • 打赏
  • 举报
回复
同意 junglerover(灌木丛) ( )
T315608 2004-05-05
  • 打赏
  • 举报
回复
楼上大兄能否结合上面例子省给代码指示,BOM资料一般在同一个界面是一次输入完还是多次输入完
junglerover 2004-05-05
  • 打赏
  • 举报
回复
不对,递规定义的方式效率不高,且不易编写程序。

只要你的BOM层数不是无限的,不如用“分级编码”的方式建立数据库,这样非常便于将数据添加到TREEVIEW中,以及检索数据。

例如:表定义 TREECODE VARCHAR(60) 每级编码为3位,可以容纳20级的BOM
, NAME VARCHAR(100)

TREECODE NAME
001 汽车
001001 动力系统
001001001 发动机
001001002 变速箱
001002 电气系统
001002001 蓄电池
001002002 空调
001002003 音响
001002003001 左音箱
001002003002 右音箱
001002003003 CD机

这样,直接SELECT * ORDER BY TREECODE,然后按照出来的顺序就可以直接往TREEVIEW里添加;以TREECODE作为KEY,直接把本结点的KEY去掉三位,就是父结点的KEY。
czwwh 2004-05-05
  • 打赏
  • 举报
回复
父项放在主表中,子项放在子表中。用循环加到treeview中,判断条件:有没有子项
Kinlon99 2004-05-05
  • 打赏
  • 举报
回复
ProdID ParentID Num

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧