Foxtable(狐表)用户栏目专家坐堂 → 流水号如何从头开始编


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

主题:流水号如何从头开始编

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


加好友 发短信
等级:二尾狐 帖子:512 积分:4492 威望:0 精华:0 注册:2018/12/5 23:10:00
流水号如何从头开始编  发帖心情 Post By:2019/3/22 15:16:00 [只看该作者]

老师,模仿帮助文件做了一下可生成1-1-1的

自动编号代码

编码规则1-1代表试验项目号,最后一位是同一个试验项目在相同试验地区的流水号,从1开始编起

同一个实验项目在不同地区试验,流水号从头开始编

如下图


图片点击可在新窗口打开查看此主题相关图片如下:图片1.png
图片点击可在新窗口打开查看
 

 如何在下面的代码中,加入改变试验地区后,流水号又从头开始编 语句

 

Select e.DataCol.Name
    Case "试验项目号"
        If e.DataRow.IsNull("试验项目号") Then
            e.DataRow("分类号") = Nothing
        Else
            Dim lb As String = e.DataRow("试验项目号")
            If e.DataRow("分类号").StartsWith(lb) = False '如果单据分类号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(分类号)","试验项目号 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该试验项目号的最大分类号
                If max > "" Then '如果存在最大分类号
                    idx = CInt(max.Substring(lb.Length+1)) + 1 '获得最大分类号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("分类号") = lb & "-"& idx
            End If
        End If
End Select


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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/22 20:12:00 [只看该作者]

 idx = CInt(max.Substring(lb.Length-1)) + 1

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


加好友 发短信
等级:二尾狐 帖子:512 积分:4492 威望:0 精华:0 注册:2018/12/5 23:10:00
  发帖心情 Post By:2019/3/22 20:29:00 [只看该作者]

老大,结果不对啊

 


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


加好友 发短信
等级:二尾狐 帖子:512 积分:4492 威望:0 精华:0 注册:2018/12/5 23:10:00
  发帖心情 Post By:2019/3/22 20:34:00 [只看该作者]


[此贴子已经被作者于2019/3/22 20:37:15编辑过]

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


加好友 发短信
等级:二尾狐 帖子:512 积分:4492 威望:0 精华:0 注册:2018/12/5 23:10:00
  发帖心情 Post By:2019/3/22 20:37:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20190322203600.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/22 21:34:00 [只看该作者]

还和档号有关,那又是另外一种规则啊。麻烦一次性把问题说清楚好吗。这个和1楼的问题完全不是一回事

Select e.DataCol.Name
    Case "试验项目号","档号"
        If e.DataRow.IsNull("试验项目号") OrElse e.DataRow.IsNull("档号") Then
            e.DataRow("分类号") = Nothing
        Else
            Dim lb As String = e.DataRow("试验项目号")
            'If e.DataRow("分类号").StartsWith(lb) = False ore '如果单据分类号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(分类号)","试验项目号 = '" & lb & "' and 档号 = '" & e.DataRow("档号") & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该试验项目号的最大分类号
                If max > "" Then '如果存在最大分类号
                    idx = CInt(max.Substring(lb.Length+1)) + 1 '获得最大分类号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("分类号") = lb & "-"& idx
            'End If
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/22 21:35:00 [只看该作者]

您这种用法,没有明确的界限,所以不能在已经有的数据上重置列。需要清空"分类号"才能重置列

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


加好友 发短信
等级:二尾狐 帖子:512 积分:4492 威望:0 精华:0 注册:2018/12/5 23:10:00
  发帖心情 Post By:2019/3/22 22:06:00 [只看该作者]

把实例发给您。蓝老师你帮我看看,第四列是正确的结果

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


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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/22 22:22:00 [只看该作者]

Select e.DataCol.Name
    Case "试验项目号","试验地区"
        If e.DataRow.IsNull("试验项目号") OrElse e.DataRow.IsNull("试验地区") Then
            e.DataRow("分类号") = Nothing
        Else
            Dim lb As String = e.DataRow("试验项目号")
            'If e.DataRow("分类号").StartsWith(lb) = False ore '如果单据分类号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(分类号)","试验项目号 = '" & lb & "' and 试验地区 = '" & e.DataRow("试验地区") & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该试验项目号的最大分类号
                If max > "" Then '如果存在最大分类号
                    idx = CInt(max.Substring(lb.Length+1)) + 1 '获得最大分类号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("分类号") = lb & "-"& idx
            'End If
        End If
End Select

 回到顶部