BOM表查询的VB实现方法_第1页
BOM表查询的VB实现方法_第2页
BOM表查询的VB实现方法_第3页
BOM表查询的VB实现方法_第4页
BOM表查询的VB实现方法_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用VB代码实现方法引用 : 无 , 部件 : 无设计:在Forml中右下角加入一个 CommandButton名称默认为CommandUf体AutoRedraw 属性设为 True窗体文件一:Form1Option ExplicitPrivate mBom As Collection 这是入口的集合Private mBomReturn As Collection 这是出口的集合,未经处理Private mBomReturnLast As Collection 这是出口的集合,经过处理Private Sub AddBomRecord()在这里往mBorm入数据库里面的原内容,为求简便,我不想连接

2、数据库 直接往里面写入记录了 , 如果需要 , 你就直接连接数据库, 分析一下里面的代码,然后再往mBomt面写入记录FG SA1 2.0000FG SA2 3.0000SA1 PT1 4.0000SA1 PT2 5.0000SA2 PT1 6.0000SA2 PT3 7.0000Dim mBomV alue As cBomV alueSet mBomV alue = New cBomV aluemBomV alue.AssBom = FGmBomV alue.BomPoint = SA1mBomV alue.Quantity = 2mBom.Add mBomV alueSet mBomV a

3、lue = New cBomV aluemBomV alue.AssBom = FGmBomV alue.BomPoint = SA2mBomV alue.Quantity = 3mBom.Add mBomV alueSet mBomV alue = New cBomV aluemBomV alue.AssBom = SA1mBomV alue.BomPoint = PT1mBomV alue.Quantity = 4mBom.Add mBomV alueSet mBomV alue = New cBomV aluemBomV alue.AssBom = SA1mBomV alue.BomPo

4、int = PT2mBomV alue.Quantity = 5mBom.Add mBomV alueSet mBomV alue = New cBomV aluemBomV alue.AssBom = SA2mBomV alue.BomPoint = PT1mBomV alue.Quantity = 6mBom.Add mBomV alueSet mBomV alue = New cBomV aluemBomV alue.AssBom = SA2mBomV alue.BomPoint = PT3mBomV alue.Quantity = 7mBom.Add mBomV alueEnd Sub

5、Private Sub Command1_Click()Dim i As IntegerDim m As cBomV alue 进行计算 注意以下两个新建实例 , 必须放置于 GetBomList 前 , 该操作也有清空现有数据的作用 , 否则会造成错误 即第一次运行后保存了数据于该两个变量中 , 并未清除相关记录 , 而下一次运 行则在现有的基础上再进行加操作, 因此数据错误了。Set mBomReturn = New CollectionSet mBomReturnLast = New CollectionCall GetBomList 计算后 ,mBomReturnLast 返回的就是最

6、终结果If mBomReturnLast.Count 0 ThenMsgBox 没有记录 !, vbInformation + vbOKOnly, BOM 表计算 Exit SubElse 在窗体中打印出列表的内容Me.ClsPrint Assbom & vbTab & Point & vbTab & QuantityFor i = 1 To mBomReturnLast.CountSet m = mBomReturnLast.Item(i)Print m.AssBom & vbTab & m.BomPoint & vbTab & m.QuantityNext iEnd IfEnd SubPr

7、ivate Sub Form_Load() 窗体调用处新建实例 , 然后再装入数据Set mBom = New CollectionAddBomRecordEnd Sub* 以下为进行计算部分的代码, 注意 Collection 里面的处理I*Private Sub GetBomList()Dim mBomTop As Collection 这里保存了顶级产成品Dim i As IntegerDim j As IntegerDim m As cBomReturnV alueDim mLast As cBomV alueDim bFind As BooleanSet mBomTop = New

8、Collection 装入顶级产成品LoadBomTop mBomTop 对顶级产品进行下级的判断For i = 1 To mBomTop.Count 最后一个参数为 1, 表示一个单位的产成品Call CalcNextBom(mBomTop.Item(i), mBomTop.Item(i), 1)Next i最终得以mBomReturn这里面已初步形成了结果了再进行表达式计算,得到的值返回到 mBomReturnLast中,注:mBomReturnLast 这个集合加入 cBomV alue 内容For i = 1 To mBomReturn.Count处理一下最终结果,如果没有在Colle

9、ction 里面发现相同的AssBomR BomPoint, 则新增加一个, 如果已发现, 仅只是数量相加Set m = mBomReturn(i) 查找是否已加入bFind = FalseFor j = 1 To mBomReturnLast.CountSet mLast = mBomReturnLast(j)If Trim(mLast.AssBom) = Trim(m.AssBom) And Trim(mLast.BomPoint) = Trim(m.BomPoint) Then 如果发现有相同的 , 则加入相关数字mLast.Quantity = mLast.Quantity + Cal

10、cExpression(m.Expression)bFind = TrueEnd IfNext j如果没有找到Set mLast = New cBomV aluemLast.AssBom = Trim(m.AssBom)mLast.BomPoint = Trim(m.BomPoint)mLast.Quantity = CalcExpression(Trim(m.Expression)mBomReturnLast.Add mLastEnd IfNext i 所有操作完毕End SubPrivate Sub LoadBomTop(ByRef BomTop As Collection)装入顶级产成品

11、,并返回到BomTo叶 即存储过程中 GetBomList 中的第一个游标的创建bomTopDim i As IntegerDim j As IntegerDim n As IntegerDim bMark As Boolean 这只是一个标识符, 表明是否发现非顶级Dim bMarkAdd As Boolean 用于判断是否已加入到 BomTo计的标识判断方法,如果AssBom在BomPoint中,那就是顶级了Dim sBomAssBom As StringFor i = 1 To mBom.CountsBomAssBom = Trim(mBom.Item(i).AssBom) 再进行循环b

12、Mark = FalseFor j = 1 To mBom.CountIf sBomAssBom = Trim(mBom.Item(j).BomPoint) ThenbMark = TrueEnd IfNext jIf bMark = False Then如果没有发现有相同的,则BomTopJ入 加入前需要进行判断是否已加入For n = 1 To BomTop.CountIf BomTop.Item(n) = sBomAssBom ThenbMarkAdd = TrueEnd IfNext nIf bMarkAdd = False Then 如果没有加入过, 则加入BomTop.Add sBomAssBomEnd IfEnd IfNext iEnd SubGetBomTrueList的存储过程用VB来描述Private Sub CalcNextBom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论