Office中国论坛/Access中国论坛

标题: 包装号断号补填齐: [打印本页]

作者: yanwei82123300    时间: 2013-1-19 13:32
标题: 包装号断号补填齐:
本帖最后由 yanwei82123300 于 2013-1-19 16:52 编辑

包装号断号补填齐:
我有一个箱单
运单号(ShipmentNO)
包装号(PackageNo)
订单号(CONumber)
行号(Line)
订单数量(Order_Qty)
产品号(ItemNumber)
产品描述(ItemDescription)
但是,由于数据是由SQL导出的因此包装号出现断号现象,请问如何才能补齐
请见附件的例子
谢谢,帮助!!
请注意:运单号(ShipmentNO)不同,包装号会重新从1开始。!!

我做了个例子!批量拆分命令
但是现在发现一个问题:运单号(ShipmentNO)9402,只能拆分1个,其他不能拆分,包装号断号。
作者: huangli0356    时间: 2013-1-19 13:49
全自定义自动编号,带断号检测补号功能
http://www.office-cn.net/forum.p ... 0878&fromuid=200938


建议LZ参考下
作者: yanwei82123300    时间: 2013-1-19 14:24
huangli0356 他的是自动编号!我的是IT导出的报表明细!需要自己进行补填,并将数据生成到表tblPacktemp中
作者: yanwei82123300    时间: 2013-1-19 14:30
不同的运单号,包装号会重新从1计算
作者: todaynew    时间: 2013-1-19 17:13
yanwei82123300 发表于 2013-1-19 14:30
不同的运单号,包装号会重新从1计算

update tbname set 包装号=Dcount("*","tbname","运单号=" & 运单号 & " and 包装号<=" & 包装号)
作者: yanwei82123300    时间: 2013-1-19 21:00
todaynew 老师您理解错了!请看1楼的例子吧!
窗体“批量拆分命令”点击后将数据生成到tblPacktemp表中
但是现在发现一个问题:运单号(ShipmentNO)9402,只能拆分2个(包装号),其他不能拆分,包装号断号(只填充了前两个,后面的没有填充)。

作者: koutx    时间: 2013-1-21 09:07
看这一句:
For ii = rst1.Fields("PackageNo") To rst1.Fields("Order_Qty") / rst1.Fields("UNITS_PER")
除了前两个PackageNo之外,其余的rst1.Fields("PackageNo") 都大于rst1.Fields("Order_Qty") / rst1.Fields("UNITS_PER")了,当然不会接着拆分了。
不清楚你的PackageNo、Order_Qty、UNITS_PER  这三者的关系?

作者: koutx    时间: 2013-1-21 09:18
如此改一下估计可以了:
Sub 拆分()  ''经典的将表数据批量追加到另一表中
On Error Resume Next
Dim S As Integer
Dim rst1 As adodb.Recordset
Dim str1 As String
str1 = "SELECT * FROM tblPackinglist"
Set rst1 = New adodb.Recordset
rst1.Open str1, CurrentProject.Connection, adOpenStatic, adLockReadOnly
If rst1.RecordCount > 0 Then
    rst1.MoveFirst
    For i = 1 To rst1.RecordCount
        S = 1 'Format(ii, "000")
        For ii = rst1.Fields("PackageNo") To rst1.Fields("PackageNo") + (rst1.Fields("Order_Qty") / rst1.Fields("UNITS_PER")) - 1
            
             DoCmd.RunSQL "INSERT INTO tblPacktemp SELECT '" & S & "' AS CreatNo, '" & rst1.Fields("ShipmentNO") & "' AS ShipmentNO, " & rst1.Fields("PackageNo") & " AS PackageNo, '" & rst1.Fields("Order_Qty") & "' AS Order_Qty,'" & rst1.Fields("ItemNumber") & "' AS ItemNumber,'" & rst1.Fields("ItemDescription") & "' AS ItemDescription,'" & rst1.Fields("UNITS_PER") & "' AS UNITS_PER,'" & rst1.Fields("CONumber") & "' AS CONumber, '" & rst1.Fields("Line") & "' AS Line"
            ' DoCmd.OpenQuery "qryUpdate表1desc"
            'DoCmd.RunSQL "INSERT INTO 表1 SELECT '" & S & "' AS 序号, '" & rst1.Fields("ITEM") & "' AS item, " & rst1.Fields("QTY") & " AS qty, '" & rst1.Fields("MO") & "' AS mo"
            S = S + 1
        Next
        rst1.MoveNext
    Next
End If
End Sub

作者: koutx    时间: 2013-1-21 09:29
For ii = rst1.Fields("PackageNo") To rst1.Fields("PackageNo") + (rst1.Fields("Order_Qty") / rst1.Fields("UNITS_PER")) - 1
此句也可改为:
For ii=1 to rst1.Fields("Order_Qty") / rst1.Fields("UNITS_PER")
作者: yanwei82123300    时间: 2013-1-21 12:29
koutx 老师谢谢您的帮助!问题是我没有说细:
我想将包装号中的断号补齐(包装号(PackageNo)
并将新的包装号生成到CreatNo字段中
请看tblPackinglist:运单号ShipmentNO:9402

PackageNo
1
6
16
17
22
24
16
17
22
24
CreatNo应当是
1
2
3
4
5

6
7
8
9
10
...
17
18
19
...
22
23
24
...

作者: yanwei82123300    时间: 2013-1-21 12:34
首先固定运单号ShipmentNO
在本运单号内补齐本运单号的PackageNo
断号
作者: yanwei82123300    时间: 2013-1-21 12:37
Order_Qty订单数量
PackageNo 包装号
UNITS_PER  拆分单位数
例如
ShipmentNO:9402
Order_Qty 8
    UNITS_PER 2
PackageNo 包装号
1
2
3
4

作者: koutx    时间: 2013-1-21 20:41
yanwei82123300 发表于 2013-1-21 12:34
首先固定运单号ShipmentNO
在本运单号内补齐本运单号的PackageNo
断号

是在tblPackinglist表中补齐运单号(PackageNo)吗?那如何知道你缺少的那此运单号所对应的其他字段的值(比如运单号为2时,对应的Order_Qty 8等字段是什么值)?
作者: yanwei82123300    时间: 2013-1-21 21:09
koutx 发表于 2013-1-21 20:41
是在tblPackinglist表中补齐运单号(PackageNo)吗?那如何知道你缺少的那此运单号所对应的其他字段的值(比 ...

由于tblpackinglist是由公司IT每天导出数据的,因此我想将补齐的包装号PackageNo生成到tblPacktemp表CreatNo字段中,我想首先以ShipmentNO运单号为首个条件,这样就固定住范围了,然后在这个范围内补齐包装号PackageNo。谢谢

作者: yanwei82123300    时间: 2013-1-21 21:11
这样就使这个ShipmentNO运单号下的PackageNo包装号能够连贯(连续1 2 3 4......)
作者: koutx    时间: 2013-1-21 21:39
还是不清楚:比如说吧
因缺少运单号2,补的时候,对应的Order_Qty、CONumber、Line、ItemNumber、ItemDescription、UNITS_PER的值从哪儿得知?
作者: yanwei82123300    时间: 2013-1-22 08:13
koutx 发表于 2013-1-21 21:39
还是不清楚:比如说吧
因缺少运单号2,补的时候,对应的Order_Qty、CONumber、Line、ItemNumber、ItemDesc ...

koutx 老师:首先是补齐PackageNo包装号,因为tblpackinglist表中的运单号固定住后对于缺少的PackageNo包装号Order_Qty、CONumber、Line、ItemNumber、ItemDescription、UNITS_PER的值从第一个PackageNo包装号到Order_Qty/UNITS_PER止
请看图片
第二列为PackageNo包装号,请注意第一行PackageNo包装号为1,Order_Qty为5 ,UNITS_PER 1,这样缺少的PackageNo包装号从1~5;第二个PackageNo包装号为6,Order_Qty为10,UNITS_PER 1,这样缺少的PackageNo包装号从6~15;第三个PackageNo包装号为16,Order_Qty为10,UNITS_PER 1,这样缺少的PackageNo包装号从16~17........
作者: koutx    时间: 2013-1-22 10:59
看附件:
[attach]51184[/attach]
作者: yanwei82123300    时间: 2013-1-22 11:19
koutx 谢谢帮助!!!非常准确!{:soso_e181:}
作者: liumporite    时间: 2014-12-20 08:47
假如除不尽有余数如何处理娜




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3