以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多条件自动编号--菜鸟求助 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28715) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:youngling -- 发布时间:2013/2/15 21:50:00 -- 多条件自动编号--菜鸟求助 菜鸟一枚,研究了帮助文件和论坛相关的帖子,只是还是没有搞定多条件自动编号. 特发帖求助:
希望达成目的: 1. 在出库明细表中能够自动生成出库用的送货单号码 2. 送货单号码为送货日期+3位流水号,即YYYYMMDD-XXX,如20130215-001 ,20130215-002 ,20130216-001 , 3. 同一天同一客户不同产品用同一个送货单号码, 4. 同一天不同客户送货单按每次流水号加1的顺序递增送货单号码, 5. 每天流水号都从001开始一个新的流水号
希望达到如下效果
请各位老师帮忙,忙乎了好几天还是没有搞定,谢谢。 附件是参考论坛弄出来的半成品没有达到想要的效果,请哪位老师好心指点下,谢谢。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:程兴刚 -- 发布时间:2013/2/16 1:32:00 -- 这个客户一天500个产品号也为1吗?是不是有一定的限制啊?比如每个送货单不超过五个记录? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lin_hailun -- 发布时间:2013/2/16 9:07:00 -- 呃,应该是这样吧。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:youngling -- 发布时间:2013/2/16 9:52:00 -- 谢谢程版主和林老师的及时回复.
程版主考虑得很全面,我一开始没有想到这个问题,有时候送货一 张送货单上会有很多产品号,但是为了方便出库统计和财务统计,我觉得还是放在一张出库单上吧,但在打印出库单的时候再考虑分页打印吧::我还没做到那一步,目前只做到记录录入部分.
也感谢林老师的程序,但我在测试时发现有一个小小的bug,如果是新增的话,没有问题,可是如果对已经存在的记录更改送货日期的话,就会发现编号顺序就不对了. 能麻烦林老师再看看吗.谢谢.
附上测试的例子,最后一行新增成功,编号也正确,但我修改了送货日期后就发现编号不对了. 麻烦各位老师帮忙看看,小女子在此谢谢各位了.
[此贴子已经被作者于2013-2-16 9:55:33编辑过]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lin_hailun -- 发布时间:2013/2/16 10:09:00 -- 代码改一下,换成这样就行了。 Select e.DataCol.Name Case = "实际交货日期","客户" If e.DataRow.IsNull("实际交货日期") OrElse e.DataRow.IsNull("客户") Then e.DataRow("送货单号码") = Nothing Else Dim d As Date = e.DataRow("实际交货日期") \'Dim y As Integer = d.Year \' Dim m As Integer = d.Month \'Dim Days As Integer = Date.DaysInMonth(y,m) \' Dim fd As Date = New Date(y,m,1) \'获得该月的第一天 \' Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天 Dim bh As String = Format(d,"yyyyMMdd") & "-" \'生成该月编号的前缀 Dim idx As String idx = e.DataTable.Compute("Max(送货单号码)","送货单号码 like \'" & bh & "*\'") If idx > "" Then Dim fdr As DataRow = e.DataTable.Find("客户 = \'" & e.DataRow("客户") & "\' And [_identify] <> " & e.DataRow("_identify") & " And 实际交货日期 = #" & e.DataRow("实际交货日期") & "#") If fdr Is Nothing Then e.DataRow("送货单号码") = bh & Format(CInt(idx.SubString(9)) + 1, "000") Else e.DataRow("送货单号码") = fdr("送货单号码") End If Else e.DataRow("送货单号码") = bh & "001" End If End If End Select |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:youngling -- 发布时间:2013/2/16 10:17:00 -- 太感谢林老师了,谢谢.
这个问题困扰我好几天了,多谢. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lsy -- 发布时间:2013/2/16 11:50:00 -- 已经弄好,下午发上来,吃饭去了。
用用看,大家交流。
[此贴子已经被作者于2013-2-16 17:03:02编辑过]
|