Foxtable(狐表)用户栏目专家坐堂 → 如何在相同的单号下,生成顺序号


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

主题:如何在相同的单号下,生成顺序号

帅哥哟,离线,有人找我吗?
飞天
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:172 积分:1914 威望:0 精华:0 注册:2012/6/6 17:08:00
如何在相同的单号下,生成顺序号  发帖心情 Post By:2012/7/26 17:08:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:相同单号下序号递增.table

请看例子,

在任何一个相同订单号下的明细表中,顺序号均由1,2,3...递增.

请前辈帮忙 !


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/7/26 17:12:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/7/26 17:22:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:幼狐 帖子:172 积分:1914 威望:0 精华:0 注册:2012/6/6 17:08:00
  发帖心情 Post By:2012/7/26 18:46:00 [只看该作者]

感谢您的帮助.

有一个问题,在重置"订单号"列的时候,每一个顺序号都会跟着自动加 1 这样明显不是很安全.

请问如何解决这个问题?


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/27 8:17:00 [只看该作者]

在muhua的基础上改一下就行了:

 

Select e.DataCol.Name
    Case "订单号"
        If e.DataRow.IsNull("订单号") Then
            e.DataRow("顺序号") = Nothing
        ElseIf e.DataRow.IsNull("顺序号") Then
            Dim max As String
            Dim idx As Integer
            Dim flt As String
            flt = "订单号 = '"& e.DataRow("订单号") & "'"
            max = e.DataTable.Compute("Max(顺序号)",flt) '取得该月的相同工程代码的最大单据编号
            If max > "" Then '如果存在最大单据编号
                idx = CInt(max) + 1 '获得最大单据编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("顺序号") = idx
        End If
End Select


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/27 10:59:00 [只看该作者]

Select e.DataCol.Name
    Case "订单号"
        If e.DataRow.IsNull("订单号") Then
            e.DataRow("顺序号") = Nothing
        ElseIf e.OldValue <> e.NewValue  OrElse e.DataRow.IsNull("顺序号") Then
            Dim max As String
            Dim idx As Integer
            Dim flt As String
            flt = "订单号 = '"& e.DataRow("订单号") & "' And  [_Identify] <> " & e.DataRow("_Identify")
            max = e.DataTable.Compute("Max(顺序号)",flt) '取得该月的相同工程代码的最大单据编号
            If max > "" Then '如果存在最大单据编号
                idx = CInt(max) + 1 '获得最大单据编号的后四位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("顺序号") = idx
        End If
End Select

 回到顶部