以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 流水号如何从头开始编 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132474) |
||||
-- 作者:yfy13338431925 -- 发布时间:2019/3/22 15:16:00 -- 流水号如何从头开始编 老师,模仿帮助文件做了一下可生成1-1-1的 自动编号代码 编码规则1-1代表试验项目号,最后一位是同一个试验项目在相同试验地区的流水号,从1开始编起 同一个实验项目在不同地区试验,流水号从头开始编 如下图 如何在下面的代码中,加入改变试验地区后,流水号又从头开始编 语句
Select e.DataCol.Name |
||||
-- 作者:有点蓝 -- 发布时间:2019/3/22 20:12:00 -- idx = CInt(max.Substring(lb.Length-1)) + 1 |
||||
-- 作者:yfy13338431925 -- 发布时间:2019/3/22 20:29:00 -- 老大,结果不对啊
|
||||
-- 作者:yfy13338431925 -- 发布时间:2019/3/22 20:34:00 -- [此贴子已经被作者于2019/3/22 20:37:15编辑过]
|
||||
-- 作者:yfy13338431925 -- 发布时间:2019/3/22 20:37:00 -- 此主题相关图片如下:qq图片20190322203600.png |
||||
-- 作者:有点蓝 -- 发布时间: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 |
||||
-- 作者:有点蓝 -- 发布时间:2019/3/22 21:35:00 -- 您这种用法,没有明确的界限,所以不能在已经有的数据上重置列。需要清空"分类号"才能重置列 |
||||
-- 作者:yfy13338431925 -- 发布时间:2019/3/22 22:06:00 -- 把实例发给您。蓝老师你帮我看看,第四列是正确的结果
|
||||
-- 作者:有点蓝 -- 发布时间: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
|