设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2782|回复: 4
打印 上一主题 下一主题

本人想求购一关于ACCESS或VB处理BOM的模块

[复制链接]
跳转到指定楼层
1#
发表于 2004-4-21 21:01:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人想求购一关于ACCESS或VB处理BOM的模块或解决方案,要求有完整BOM的建立,查询,反查询,至少要有四到五层的.
有意者请报价和简要说明.123cn@126.com
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2004-6-20 19:22:00 | 只看该作者
Option Compare Database

Option Explicit

Dim lngNode As Long

Sub Bom(rsBom000 As ADODB.Recordset, trv As TreeView, strMat As String, Qty As Single, Level As String)

    Dim str As String

    Dim n As Integer

    Dim rsBomZi As New ADODB.Recordset

    Dim cnPhan As New ADODB.Connection

    cnPhan.Open "rovider=MSDataShape;Data Provider=NONE"

    str = _

        "SHAPE APPEND NEW adchar(30) AS ParreName," & _

            " NEW adsingle AS ParreQty," & _

            " NEW adChar(30) AS ChildName," & _

            " NEW adsingle AS ChildQty "

    If rsExpand.State = adStateOpen Then rsExpand.Close

    rsExpand.Open str, cnPhan, adOpenStatic, adLockBatchOptimistic '打开虚构记录集

     If cnn.State = adStateClosed Then Call login '打开数据库连接

   

    str = "SHAPE {select ItemName," & Qty & " as Pqty from ItemName where ItemName like '" & strMat & "' order by ItemName} APPEND"

    For n = 1 To BomLevel - 1

        str = str & " (( SHAPE {select * from BomItem} rsBom" & Format(n, "000") & " APPEND"

    Next

    str = str & " ({select * from BomItem} rsBom" & Format(n, "000")

    For n = BomLevel To 2 Step -1

        str = str & " RELATE BiItName TO BiPItName))"

    Next

    str = str & " RELATE ItemName TO BiPItName)" '数据构型 BOM

    If rsBom000.State = adStateOpen Then rsBom000.Close

   

    rsBom000.Open str, cnn, adOpenStatic, adLockBatchOptimistic '打开0层BOM

    Dim nodeItem As Node

   

    While Not rsBom000.EOF

        Select Case Level

        Case "Single Level"

            Call BomExpandNext(rsBom000, trv, 1, Qty)

        Case "Multi Level"

        

    Set nodeItem = trv.Nodes.Add(, , "a" & lngNode, rsBom000!ItemName)

    'nodeItem.EnsureVisible

            Call BomExpand(rsBom000, trv, "a" & lngNode, 1, Qty)

        End Select

        lngNode = lngNode + 1

        rsBom000.MoveNext

        nodeItem.EnsureVisible

    Wend

    'MsgBox rsExpand.RecordCount

    rsBom000.Close

End Sub

Sub BomExpand(rst As ADODB.Recordset, trv As TreeView, strKey As String, n As Integer, Qty As Single)

    Dim rstZi As New ADODB.Recordset

    Dim BomQty As Single

    Dim nodeItem As Node

    Set rstZi = rst("rsBom" & Format(n, "000")).Value

    If rstZi.RecordCount = 0 Then Exit Sub

        While Not rstZi.EOF

            'BomQty = rstZi!BiQr / rstZi!BiPr * (1 + rstZi!BiWr)

            lngNode = lngNode + 1

            Set nodeItem = trv.Nodes.Add(strKey, etvwChild, "a" & lngNode, rstZi!BiItName)

            'nodeItem.EnsureVisible

           ' nodeItem.Expanded = False

            'MsgBox rstZi!BiItName

            Call BomExpand(rstZi, trv, "a" & lngNode, n + 1, BomQty * Qty)

            'nodeItem.EnsureVisible

            rstZi.MoveNext

        Wend

               

End Sub

Sub BomExpandNext(rsBom000 As ADODB.Recordset, rsExpand As ADODB.Recordset, rst As ADODB.Recordset, n As Integer, Qty As Single)

    Dim rstZi As New ADODB.Recordset

    Dim BomQty As Single    Set rstZi = rst("rsBom" & Format(n, "000")).Value        While Not rstZi.EOF

            BomQty = rstZi!BiQr / rstZi!BiPr * (1 + rstZi!BiWr)

            'MsgBox rstZi!BiItName

            If Left(rstZi!BiItName, 1) <> "G" Then

                rsExpand.AddNew

                rsExpand!ParreName = rsBom000!ItemName

                rsExpand!ParreQty = rsBom000!Pqty

                'If n = 1 Then

                'Else

                rsExpand!ChildName = rstZi!BiItName                'Qty = Qty * BomQty

                rsExpand!ChildQty = Format(Qty * BomQty, "##.######")

                'End If

                'Exit Sub

            Else

                Call BomExpandNext(rsBom000, rsExpand, rstZi, n + 1, BomQty * Qty)            End If

            rstZi.MoveNext

        Wend

               

End Sub

Sub BomPeg(rsBom000 As ADODB.Recordset, rsExpand As ADODB.Recordset, strMat As String, Qty As Single, Level As String)

    Dim str As String

    Dim n

点击这里给我发消息

3#
发表于 2004-6-28 02:21:00 | 只看该作者
不错,好代码,有启发
4#
发表于 2007-7-15 00:56:00 | 只看该作者
本帖最后由 yodong 于 2009-7-27 09:00 编辑
自己已经解决,有自己的算法了.
5#
发表于 2016-4-16 10:01:32 | 只看该作者
对于我这样的菜鸟来说希望能提供文件.谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 12:36 , Processed in 0.109783 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表