转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
BOM表查询的VB实现方法         ★★★★

BOM表查询的VB实现方法

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2634 更新时间:2009/4/23 15:37:21
           ''''如果没有加入过,则加入
                BomTop.Add sBomAssBom
            End If
        End If
    Next i
   
   
End Sub


''''GetBomTrueList的存储过程用VB来描述
Private Sub CalcNextBom(sAssBom As String, sAssPoint As String, sExp As String)
    Dim dQuan As Double
    Dim sExpression As String
    Dim sPoint As String
   
    Dim BomTop As String
   
    ''''创建point_cursor处的游标
    Dim mBomPoint As Collection
   
    Set mBomPoint = New Collection
   
   
    ''''装入相关的集合
    Call LoadNextPoint(mBomPoint, sAssPoint)
   
    ''''装入完毕后,再进行判断是否为明细级半成品,如果不是,递归一次本函数,如果是,加入到mBomReturn里面去
   
    Dim i As Integer
    Dim mBomReturnValue As cBomReturnValue
   
    For i = 1 To mBomPoint.Count
        ''''判断是否为明细级
        If IsDetailPoint(Trim(mBomPoint.Item(i).BomPoint)) = True Then
            ''''如果是明细级,则加入到cBomReturnValue
            Set mBomReturnValue = New cBomReturnValue
            mBomReturnValue.AssBom = Trim(sAssBom)
            mBomReturnValue.BomPoint = Trim(mBomPoint.Item(i).BomPoint)
            ''''构建表达式
            mBomReturnValue.Expression = sExp & "*" & Trim(CStr(mBomPoint.Item(i).Quantity))
           
            mBomReturnValue.Quantity = mBomPoint.Item(i).Quantity
           
           
            ''''加入
            mBomReturn.Add mBomReturnValue
       
        Else
           
            ''''如果不是明细项,则再次递归,注意传入的第一个参数,总是顶级Bom,仅作标识符用
            Call CalcNextBom(sAssBom, Trim(mBomPoint.Item(i).BomPoint), sExp & "*" & Trim(CStr(mBomPoint.Item(i).Quantity)))
        End If
           
    Next i
   
   
       
End Sub

Private Sub LoadNextPoint(ByRef BomPoint As Collection, ByVal PointName As String)
''''相当于GetBomTrueList中的游标中的select distinct point,sl from te where Assbom = @pointName

    Dim i As Integer
    Dim j As Integer
   
    Dim bMark As Boolean
    Dim mPointValue As cPointValue
                   
    For i = 1 To mBom.Count
        bMark = False
        If Trim(mBom.Item(i).AssBom) = Trim(PointName) Then
            ''''判断是否已加入
            For j = 1 To BomPoint.Count
                If Trim(BomPoint.Item(j).BomPoint) = Trim(mBom.Item(i).BomPoint) And BomPoint.Item(j).Quantity = mBom.Item(i).Quantity Then
                    bMark = True
                End If
            Next j
            If bMark = False Then
                ''''表示没有加入
                Set mPointValue = New cPointValue
                mPointValue.BomPoint = Trim(mBom.Item(i).BomPoint)
                mPointValue.Quantity = mBom.Item(i).Quantity
                BomPoint.Add mPointValue
            End If

        End If
    Next i
   
   

End Sub

Private Function IsDetailPoint(ByVal PointName As String) As Boolean
''''判断是否为底级半成品

    ''''只需要判断PointName不在mBom的AssBom项中即可
   
    Dim i As Integer
   
    For i = 1 To mBom.Count
        If Trim(mBom.Item(i).AssBom) = Trim(PointName) Then
            ''''如果找到了,直接返回False,并退出函数
            IsDetailPoint = False
            Exit Function
        End If
    Next i
   
    ''''如果到了这里还没有找到,那么就肯定是底级了
    IsDetailPoint = True
End Function

Public Function CalcExpression(strExp As String) As Double
''''计算处理中的表达式,注意,只有乘法


Dim sItemExp() As String

Dim dReturnValue As Double
Dim iIndex As Integer

sItemExp = Split(Trim(strExp), "*")


If UBound(sItemExp) < 0 Then
    CalcExpression = 0
Else

    dReturnValue = 1
    For iIndex = 0 To UBound(sItemExp)
        If Trim(sItemExp(iIndex)) = "" Then
            sItemExp(iIndex) = 0
        End If
       
       
        dReturnValue = dReturnValue * CDbl(sItemExp(iIndex))
    Next iIndex
   
    CalcExpression = dReturnValue
   


End If

End Function

类模块一:类名:cBomReturnValue

Option Explicit

''''保持属性值的局部变量
Private mvarAssBom As String ''''局部复制
Private mvarBomPoint As String ''''局部复制
Private mvarQuantity As Double ''''局部复制
Private mvarExpression As String ''''局部复制
Public Property Let Expression(ByVal vData As String)
''''向属性指派值时使用,位于赋值语句的左边。
''''Syntax: X.Expression = 5
    mvarExpression = vData
End Property


Public Property Get Expression() As String
''''检索属性值时使用,位于赋值语句的右边。
''''Syntax: Debug.Print X.Expression
    Expression = mvarExpression
End Property

Public Property Let Quantity(ByVal vData As Double)
''''向属性指派值时使用,位于赋值语句的左边。
''''Syntax: X.Quantity = 5
    mvarQuantity = vData
End Property


Public Property Get Quantity() As Double
''''检索属性值时使用,位于赋值语句的右边。
''''Syntax: Debug.Print X.Quantity
    Quantity = mvarQuantity
End Property

Public Property Let BomPoint(ByVal vData As String)
''''向属性指派值时使用,位于赋值语句的左边。
''''Syntax: X.BomPoint = 5
    mvarBomPoint = vData
End Property


Public Property Get BomPoint() As String
''''检索属性值时使用,位于赋值语句的右边。
''''Syntax: Debug.Print X.BomPoint
    BomPoint = mvarBomPoint
End Property

Public Property Let AssBom(ByVal vData As String)
''''向属性指派值时使用,位于赋值语句的左边。
''''Syntax: X.AssBom = 5
    mvarAssBom = vData
End Property


Public Property Get AssBom() As String
''''检索属性值时使用,位于赋值语句的右边。
''''Syntax: Debug.Print X.AssBom
    AssBom = mvarAssBom
End Property

类模块二:类名:cBomValue

Option Explicit

''''保持属性值的局部变量
Private mvarAssBom As String ''''局部复制
Private mvarBomPoint As String ''''局部复制
Private mvarQuantity As Double ''''局部复制
Public Property Let Quantity(ByVal vData As Double)
''''向属性指派值时使用,位于赋值语句的左边。
''''Syntax: X.Quantity = 5
    mvarQuantity = vData
End Property


Public Property Ge

上一页  [1] [2] [3]  下一页


[C语言系列]C#winform中,MdiParent中每个子窗口都只能打开一…  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台