| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1790 人关注过本帖, 1 人收藏
标题:如何用递归实现?
只看楼主 加入收藏
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
结帖率:85.71%
收藏(1)
已结贴  问题点数:100 回复次数:30 
如何用递归实现?
我很想学习下递归算法,附件中的结果是正确的,用的是字典,我还是想请大家用递归的方法帮忙解答下!谢谢
数据在excel中,我想改为SQL,用递归方便些。
递归BOM.rar (11.77 KB)

1.输入A,得到B1,B2,B3和Usage
2.再用B1,B2,B3中Component  Type不为Rawpart的结果为条件查询,B1得到C1,C2;B2得到D1和各自的Usage
3.C1,C2,D1继续用Component  Type不为Rawpart的结果为条件查询,C1结果得到E1和Usage
4. 将一二三每次的到的Component  Type为Prepped和Rawpart分开格式如下
5.这个只有三层,我的正式数据层次不确定,但逻辑都这样。因此用递归写成函数可能较好。
搜索更多相关主题的帖子: excel 如何 
2014-03-19 12:32
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
用VB+ACCESS做的,SQL的话思路应该差不多

Dim Conn As New ADODB.Connection, Rs As New ADODB.Recordset, Rs_1 As New ADODB.Recordset
Dim PN As String, Component As String, Component_Type As String, Usage As Integer
Private Sub BOM_Run()
PN = A
Rs.Open "Select * from BOM where Assembly = '" & PN & "'", Conn, 1, 1  ------ BOM为上阶材料和下阶材料的对应关系表
If Not Rs.EOF Then
    Rs.Movefirst
    Do While Not Rs.EOF
        Component = Rs.Fileds("Component")
        Component_Type = Rs.Fileds("Component_Type")
        Usage = Rs.Fileds("Usage")
        Conn.Excute ("Insert into BOM_A Values('" & PN & "','" & Component & "','" & Component_Type & "'," & Usage & ")")  --- BOM_A 为 A料的BOM表
        Rs.MoveNext
    Loop
    Rs.Close
Else
    MsgBox "没有找到材料BOM:" & PN
    Rs.Close
    Exit Sub
End If

Rs_Qty = 1
Do Until Rs_Qty = 0
    Rs.Open "Select * from BOM_A where [Component Type] <> '" & RawPart & "'", Conn, 1, 1
    Rs_Qty = Rs.RecordCount
    If Rs_Qty <> 0 Then
        Rs.Movefirst
        Do While Not Rs.EOF
            PN = Rs.Fileds("Component")
            Rs_1.Open "Select * from BOM where Assembly = '" & PN & "'", Conn, 1, 1  
            If Not Rs_1.EOF Then
                Rs_1.Movefirst
                Do While Not Rs.EOF
                    Component = Rs_1.Fileds("Component")
                    Component_Type = Rs_1.Fileds("Component_Type")
                    Usage = Rs_1.Fileds("Usage")
                    Conn.Excute ("Insert into BOM_A Values('" & PN & "','" & Component & "','" & Component_Type & "'," & Usage & ")")
                    Rs_1.MoveNext
                Loop
                Rs.Close
            Else
                MsgBox "没有找到材料BOM:" & PN
                Rs_1.Close
                Exit Sub
            End If
            Rs.MoveNext
        Loop
        Rs.Close
    Else
        Rs.Close
        Exit Do
    End If
Loop
MsgBox "展BOM成功!"
End Sub
2014-03-19 13:28
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 2楼 owenlu1981
谢谢,可以将你测试的数据附件传上来看看吗?谢谢
2014-03-19 14:16
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
回复 3楼 yuk_yu
上阶材料和下阶材料的对应关系表给我下
2014-03-19 14:28
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 4楼 owenlu1981
谢谢

[ 本帖最后由 yuk_yu 于 2014-3-19 15:55 编辑 ]
2014-03-19 14:57
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
递归BOM.zip (24.09 KB)
2014-03-19 15:30
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:0 
看看是否OK
2014-03-19 15:31
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 7楼 owenlu1981
非常感谢!!
2014-03-19 15:54
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
收藏
得分:100 
百分?
2014-03-19 17:07
yuk_yu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:334
专家分:134
注 册:2009-3-16
收藏
得分:0 
回复 9楼 owenlu1981
可否改为函数,方便直接调用!谢谢
2014-03-19 17:46
快速回复:如何用递归实现?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021248 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved