Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教修改共用BOM的问题

sunny  发表于:2011-07-04 10:50:10  
复制

点击下载此附件

 

想实现的效果:(下面红色字体部分)

当子窗零件编号=11-0008-YYYYY-01Y时,在他下面加一编号11-0008-BKJ11-01Y,有两种情况:

 

1.该编号没有下层,生成下层BOM编号

 

BOM编号                  BOM等级      编号                             

100001100000                2         11-0008-YYYYY-01Y              

100001100000100000          3         11-0008-BKJ11-01Y  

 

 

2.该编号有下层,先查找下层最大的BOM编号再+1

 

BOM编号                  BOM等级      编号                             

100001100000                2         11-0008-YYYYY-01Y              

100001100000100000          3         21-0008-BKJ11-01Y

100001100000100001          3         31-0008-BKJ11-01Y

100001100000100002          3         11-0008-BKJ11-01Y

 

 

Top
sunny 发表于:2011-07-04 10:57:41
库里的代码应该怎么修改?

煮江品茶 发表于:2011-07-04 11:15:23
追加查询即可

sunny 发表于:2011-07-04 11:59:28

Private Sub Command11_Click()
DoCmd.SetWarnings False

With Me.lit_bombiao2.Form
    .Recordset.MoveFirst
    Do Until .Recordset.EOF
        If Me.ljbh = "11-0008-YYYYY-01Y" Then
            sql = "select top 1 bombh,bomdj from lit_bombiao2 where bombh like '" & Me.bombh & "*' and bomdj=" & Me.bomdj + 1 & " order by bombh desc"
            rs.Open sql, CurrentProject.Connection, 1, 3, 512
            If rs.RecordCount > 0 Then
                Me.bomdj1 = rs!bombh + 1
                Me.bomdj1 = rs!bomdj + 1
                DoCmd.RunSQL "insert into lit_bombiao2(bombh,bomdj,ljbh) values('" & Me.bombh1 & "','" & Me.bomdj1 & "','" & Me.ljbh1 & "')"
            Else
                Me.bomdj1 = rs!bombh & "100000"
                Me.bomdj1 = rs!bomdj + 1
                DoCmd.RunSQL "insert into lit_bombiao2(bombh,bomdj,ljbh) values('" & Me.bombh1 & "','" & Me.bomdj1 & "','" & Me.ljbh1 & "')"
            End If
            rs.Close
            Set rs = Nothing
        End If
    .Recordset.MoveNext
    Loop
End With

DoCmd.SetWarnings True
End Sub

 

代码是这样写的,但是没有添加进去



赵文斌 发表于:2011-07-04 12:20:50
设计思路有问题,这样会变得很复杂

sunny 发表于:2011-07-04 14:09:17

有何更好的办法?

 

目前的方法关键是要查找下层的bom编号,

select top 1 bombh,bomdj from lit_bombiao2 where bombh like '" & Me.bombh & "*' and bomdj=" & Me.bomdj + 1 & " order by bombh desc

 

这句单独用查询设计来测试是可以找到的,不知道什么原因放到按钮里执行时,debug.print rs!bombh得到的是NULL的,所以没有执行

            If rs.RecordCount > 0 Then
                Me.bomdj1 = rs!bombh + 1
                Me.bomdj1 = rs!bomdj + 1
                DoCmd.RunSQL "insert into lit_bombiao2(bombh,bomdj,ljbh) values('" & Me.bombh1 & "','" & Me.bomdj1 & "','" & Me.ljbh1 & "')"
            Else
                Me.bomdj1 = rs!bombh & "100000"
                Me.bomdj1 = rs!bomdj + 1
                DoCmd.RunSQL "insert into lit_bombiao2(bombh,bomdj,ljbh) values('" & Me.bombh1 & "','" & Me.bomdj1 & "','" & Me.ljbh1 & "')"
            End If
求解



煮江品茶 发表于:2011-07-04 14:55:17

没那么复杂,简单点就可以了:

 

dim n as string
dim ssql as string
n=dmax("bom编号","tbname","零件编号='11-0008-YYYYY-01Y'")
if len(n)<=12 then
    n=n & "100000"
else
    n=n+1
end if
ssql="INSERT INTO tbname (bom编号,零件编号) "
ssql=ssql & "VALUES ('" & n & "','11-0008-BKJ11-01Y')"
CurrentDb.Execute ssql



sunny 发表于:2011-07-04 15:47:25

情况有点不同,11-0008-YYYYY-01Y是一个共用件,在不同BOM里其bom编号和等级可能不同,所以才想在逐行查找的时候先找出其bom编号和等级再操作的



sunny 发表于:2011-07-05 14:03:27


sunny 发表于:2011-07-18 10:51:08

请管理员结帖,谢谢!



结贴专用 发表于:2011-08-04 09:11:09

无满意回复结贴



总记录:10篇  页次:1/1 9 1 :