Foxtable(狐表)用户栏目专家坐堂 → 多条件自动编号--菜鸟求助


  共有8829人关注过本帖树形打印复制链接

主题:多条件自动编号--菜鸟求助

美女呀,离线,留言给我吧!
youngling
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
多条件自动编号--菜鸟求助  发帖心情 Post By:2013/2/15 21:50:00 [只看该作者]

菜鸟一枚,研究了帮助文件和论坛相关的帖子,只是还是没有搞定多条件自动编号. 特发帖求助:

 

希望达成目的:

1. 在出库明细表中能够自动生成出库用的送货单号码

2. 送货单号码为送货日期+3位流水号,即YYYYMMDD-XXX,如20130215-001 ,20130215-002 ,20130216-001 ,

3. 同一天同一客户不同产品用同一个送货单号码,

4. 同一天不同客户送货单按每次流水号加1的顺序递增送货单号码,

5. 每天流水号都从001开始一个新的流水号

 

希望达到如下效果

 

客户 产品号            实际送货日期   送货单号码 解释
aa aa11

2月3日

20130203-001 同一客户同一天流水号相同
aa bb11

2月3日

20130203-001 同一客户同一天流水号相同
aa cc11

2月3日

20130203-001 同一客户同一天流水号相同
bb s22

2月3日

20130203-002 不同客户同一天流水号递增
bb d22

2月3日

20130203-002 同一客户同一天流水号相同
cc e11

2月3日

20130203-003 不同客户同一天流水号递增
aa aa11

2月5日

20130205-001 每天流水号从001开始
aa cc11

2月5日

20130205-001  
bb s22

2月5日

20130205-002  
cc e11

2月5日

20130205-003  
aa aa11

2月8日

201302083-001  

 

请各位老师帮忙,忙乎了好几天还是没有搞定,谢谢。

附件是参考论坛弄出来的半成品没有达到想要的效果,请哪位老师好心指点下,谢谢。

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目3.table


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/2/16 1:32:00 [只看该作者]

这个客户一天500个产品号也为1吗?是不是有一定的限制啊?比如每个送货单不超过五个记录?

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/16 9:07:00 [只看该作者]

 呃,应该是这样吧。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table


 回到顶部
美女呀,离线,留言给我吧!
youngling
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2013/2/16 9:52:00 [只看该作者]

谢谢程版主和林老师的及时回复. 

 

程版主考虑得很全面,我一开始没有想到这个问题,有时候送货一 张送货单上会有很多产品号,但是为了方便出库统计和财务统计,我觉得还是放在一张出库单上吧,但在打印出库单的时候再考虑分页打印吧::我还没做到那一步,目前只做到记录录入部分.

 

也感谢林老师的程序,但我在测试时发现有一个小小的bug,如果是新增的话,没有问题,可是如果对已经存在的记录更改送货日期的话,就会发现编号顺序就不对了. 能麻烦林老师再看看吗.谢谢.

 

附上测试的例子,最后一行新增成功,编号也正确,但我修改了送货日期后就发现编号不对了. 麻烦各位老师帮忙看看,小女子在此谢谢各位了.

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目13.table

[此贴子已经被作者于2013-2-16 9:55:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By: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
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2013/2/16 10:17:00 [只看该作者]

太感谢林老师了,谢谢.

 

这个问题困扰我好几天了,多谢.


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/2/16 11:50:00 [只看该作者]

已经弄好,下午发上来,吃饭去了。

 

用用看,大家交流。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:每日编号.table

[此贴子已经被作者于2013-2-16 17:03:02编辑过]

 回到顶部