BOM表查询的VB实现方法Word格式.docx
- 文档编号:15928902
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:6
- 大小:15.93KB
BOM表查询的VB实现方法Word格式.docx
《BOM表查询的VB实现方法Word格式.docx》由会员分享,可在线阅读,更多相关《BOM表查询的VB实现方法Word格式.docx(6页珍藏版)》请在冰豆网上搜索。
PrivateSubAddBomRecord()
'
在这里往mBom加入数据库里面的原内容,为求简便,我不想连接数据库
直接往里面写入记录了,如果需要,你就直接连接数据库,分析一下里面的
代码,然后再往mBom里面写入记录
FGSA12.0000
FGSA23.0000
SA1PT14.0000
SA1PT25.0000
SA2PT16.0000
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
继续阅读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BOM 查询 VB 实现 方法