BOM表查询的VB实现方法文档格式.docx

上传人:b****6 文档编号:17734012 上传时间:2022-12-09 格式:DOCX 页数:11 大小:17.50KB
下载 相关 举报
BOM表查询的VB实现方法文档格式.docx_第1页
第1页 / 共11页
BOM表查询的VB实现方法文档格式.docx_第2页
第2页 / 共11页
BOM表查询的VB实现方法文档格式.docx_第3页
第3页 / 共11页
BOM表查询的VB实现方法文档格式.docx_第4页
第4页 / 共11页
BOM表查询的VB实现方法文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

BOM表查询的VB实现方法文档格式.docx

《BOM表查询的VB实现方法文档格式.docx》由会员分享,可在线阅读,更多相关《BOM表查询的VB实现方法文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

BOM表查询的VB实现方法文档格式.docx

SA2PT37.0000

DimmBomValueAscBomValue

SetmBomValue=NewcBomValue

mBomValue.AssBom="

FG"

mBomValue.BomPoint="

SA1"

mBomValue.Quantity=2

mBom.AddmBomValue

SA2"

mBomValue.Quantity=3

PT1"

mBomValue.Quantity=4

PT2"

mBomValue.Quantity=5

mBomValue.Quantity=6

PT3"

mBomValue.Quantity=7

EndSub

PrivateSubCommand1_Click()

DimiAsInteger

DimmAscBomValue

进行计算

注意以下两个新建实例,必须放置于GetBomList前,该操作也有清空现有数据的作用,否则会造成错误

即第一次运行后保存了数据于该两个变量中,并未清除相关记录,而下一次运行则在现有的基础上再进行加操作,因此数据错误了。

SetmBomReturn=NewCollection

SetmBomReturnLast=NewCollection

CallGetBomList

计算后,mBomReturnLast返回的就是最终结果

IfmBomReturnLast.Count<

0Then

MsgBox"

没有记录!

"

vbInformation+vbOKOnly,"

BOM表计算"

ExitSub

Else

在窗体中打印出列表的内容

Me.Cls

Print"

Assbom"

&

vbTab&

"

Point"

Quantity"

Fori=1TomBomReturnLast.Count

Setm=mBomReturnLast.Item(i)

Printm.AssBom&

m.BomPoint&

m.Quantity

Nexti

EndIf

PrivateSubForm_Load()

窗体调用处新建实例,然后再装入数据

SetmBom=NewCollection

AddBomRecord

***************************************************************

*

*以下为进行计算部分的代码,注意Collection里面的处理

PrivateSubGetBomList()

DimmBomTopAsCollection'

这里保存了顶级产成品

DimjAsInteger

DimmAscBomReturnValue

DimmLastAscBomValue

DimbFindAsBoolean

SetmBomTop=NewCollection

装入顶级产成品

LoadBomTopmBomTop

对顶级产品进行下级的判断

Fori=1TomBomTop.Count

最后一个参数为1,表示一个单位的产成品

CallCalcNextBom(mBomTop.Item(i),mBomTop.Item(i),"

1"

最终得以mBomReturn,这里面已初步形成了结果了

再进行表达式计算,得到的值返回到mBomReturnLast中,注:

mBomReturnLast这个集合加入cBomValue内容

Fori=1TomBomReturn.Count

处理一下最终结果,如果没有在Collection里面发现相同的AssBom及BomPoint,则新增加一个,如果已发现,仅只是数量相加

Setm=mBomReturn(i)

查找是否已加入

bFind=False

Forj=1TomBomReturnLast.Count

SetmLast=mBomReturnLast(j)

IfTrim(mLast.AssBom)=Trim(m.AssBom)AndTrim(mLast.BomPoint)=Trim(m.BomPoint)Then

如果发现有相同的,则加入相关数字

mLast.Quantity=mLast.Quantity+CalcExpression(m.Expression)

bFind=True

Nextj

IfbFind=FalseThen

如果没有找到

SetmLast=NewcBomValue

mLast.AssBom=Trim(m.AssBom)

mLast.BomPoint=Trim(m.BomPoint)

mLast.Quantity=CalcExpression(Trim(m.Expression))

mBomReturnLast.AddmLast

所有操作完毕

PrivateSubLoadBomTop(ByRefBomTopAsCollection)

装入顶级产成品,并返回到BomTop中

即存储过程中GetBomList中的第一个游标的创建@bomTop

DimnAsInteger

DimbMarkAsBoolean'

这只是一个标识符,表明是否发现非顶级

DimbMarkAddAsBoolean'

用于判断是否已加入到BomTop中的标识

判断方法,如果AssBom不在BomPoint中,那就是顶级了

DimsBomAssBomAsString

Fori=1TomBom.Count

sBomAssBom=Trim(mBom.Item(i).AssBom)

再进行循环

bMark=False

Forj=1TomBom.Count

IfsBomAssBom=Trim(mBom.Item(j).BomPoint)Then

bMark=True

IfbMark=FalseThen

如果没有发现有相同的,则BomTop加入

加入前需要进行判断是否已加入

Forn=1ToBomTop.Count

IfBomTop.Item(n)=sBomAssBomThen

bMarkAdd=True

Nextn

IfbMarkAdd=FalseThen

如果没有加入过,则加入

BomTop.AddsBomAssBom

GetBomTrueList的存储过程用VB来描述

PrivateSubCalcNextBom(sAssBomAsString,sAssPointAsString,sExpAsString)

DimdQuanAsDouble

DimsExpressionAsString

DimsPointAsString

DimBomTopAsString

创建point_cursor处的游标

DimmBomPointAsCollection

SetmBomPoint=NewCollection

装入相关的集合

CallLoadNextPoint(mBomPoint,sAssPoint)

装入完毕后,再进行判断是否为明细级半成品,如果不是,递归一次本函数,如果是,加入到mBomReturn里面去

DimmBomReturnValueAscBomReturnValue

Fori=1TomBomPoint.Count

判断是否为明细级

IfIsDetailPoint(Trim(mBomPoint.Item(i).BomPoint))=TrueThen

如果是明细级,则加入到cBomReturnValue

SetmBomReturnValue=NewcBomReturnValue

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.AddmBomReturnValue

如果不是明细项,则再次递归,注意传入的第一个参数,总是顶级Bom,仅作标识符用

CallCalcNextBom(sAssBom,Trim(mBomPoint.Item(i).BomPoint),sExp&

Trim(CStr(mBomPoint.Item(i).Quantity)))

PrivateSubLoadNextPoint(ByRefBomPointAsCollection,ByValPointNameAsString)

相当于GetBomTrueList中的游标中的selectdistinctpoint,slfromtewhereAssbom=@pointName

DimbMarkAsBoolean

DimmPointValueAscPointValue

IfTrim(mBom.Item(i).AssBom)=Trim(PointName)Then

判断是否已加入

Forj=1ToBomPoint.Count

IfTrim(BomPoint.Item(j).BomPoint)=Trim(mBom.Item(i).BomPoint)AndBomPoint.Item(j).Quantity=mBom.Item(i).QuantityThen

表示没有加入

SetmPointValue=NewcPointValue

mPointValue.BomPoint=Trim(mBom.Item(i).BomPoint)

mPointValue.Quantity=mBom.Item(i).Quantity

BomPoint.AddmPointValue

PrivateFunctionIsDetailPoint(ByValPointNameAsString)AsBoolean

判断是否为底级半成品

只需要判断PointName不在mBom的AssBom项中即可

如果找到了,直接返回False,并退出函数

IsDetailPoint=False

ExitFunction

如果到了这里还没有找到,那么就肯定是底级了

IsDetailPoint=True

EndFunction

PublicFunctionCalcExpression(strExpAsString)AsDouble

计算处理中的表达式,注意,只有乘法

DimsItemExp()AsString

DimdReturnValueAsDouble

DimiIndexAsInteger

sItemExp=Split(Trim(strExp),"

IfUBound(sItemExp)<

CalcExpression=0

dReturnValue=1

ForiIndex=0ToUBound(sItemExp)

IfTrim(sItemExp(iIndex))="

Then

sItemExp(iIndex)=0

dReturnValue=dReturnValue*CDbl(sItemExp(iIndex))

NextiIndex

CalcExpression=dReturnValue

类模块一:

类名:

cBomReturnValue

保持属性值的局部变量

PrivatemvarAssBomAsString'

局部复制

PrivatemvarBomPointAsString'

PrivatemvarQuantityAsDouble'

PrivatemvarExpressionAsString'

PublicPropertyLetExpression(ByValvDataAsString)

向属性指派值时使用,位于赋值语句的左边。

Syntax:

X.Expression=5

mvarExpression=vData

EndProperty

PublicPropertyGetExpression()AsString

检索属性值时使用,位于赋值语句的右边。

Debug.PrintX.Expression

Expression=mvarExpression

PublicPropertyLetQuantity(ByValvDataAsDouble)

X.Quantity=5

mvarQuantity=vData

PublicPropertyGetQuantity()AsDouble

Debug.PrintX.Quantity

Quantity=mvarQuantity

PublicPropertyLetBomPoint(ByValvDataAsString)

X.BomPoint=5

mvarBomPoint=vData

PublicPropertyGetBomPoint()AsString

Debug.PrintX.BomPoint

BomPoint=mvarBomPoint

PublicPropertyLetAssBom(ByValvDataAsString)

X.AssBom=5

mvarAssBom=vData

PublicPropertyGetAssBom()AsString

Debug.PrintX.AssBom

AssBom=mvarAssBom

类模块二:

cBomValue

类模块三:

cPointValue

加入后可直接在窗体中Print出列表。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1