Foxtable(狐表)用户栏目专家坐堂 → 取多列数据自动编号


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

主题:取多列数据自动编号

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/8 23:03:00 [显示全部帖子]

 参考代码

 

Select e.DataCol.Name
    Case "容量","电压","外壳直径","膜厚","相别"
        Dim lb As String = ""
        If e.DataRow.IsNull("外壳直径") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("外壳直径")
            lb &= iif(s.length > 2, s.SubString(0,2), s)
        End If
        If e.DataRow.isnull("电压") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("电压")
            lb &= iif(s.length > 2, s.SubString(0,2), s)
        End If
        If e.DataRow.isnull("膜厚") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("膜厚")
            lb &= iif(s.length > 2, s.SubString(0,2), s)
        End If
        If e.DataRow.isnull("相别") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("相别")
            lb &= iif(s.length > 2, s.SubString(0,2), s)
        End If
        If e.DataRow("产品编号").StartsWith(lb) = False '如果单据编号前缀不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("max(产品编号)", "产品编号 like '" & lb & "%' and _Identify <> " & e.DataRow("_Identify"))  '取得该类别的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(lb.length,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("产品编号") = lb & Format(idx,"000")
        End If
End Select


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/9 10:37:00 [显示全部帖子]

 把你的表格上传上来测试。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/9 12:02:00 [显示全部帖子]

Select e.DataCol . Name
    Case "电压","容量","相别","膜厚","外壳直径"
        Dim lb As String = ""
        If e.DataRow.IsNull("电压") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("电压")
            If s.Length > 2 Then
                lb &= s.SubString(0,2)
            Else
                lb &= s
            End If
        End If
        If e.DataRow.IsNull("容量") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("容量")
            If s.Length > 2 Then
                lb &= s.SubString(0,2)
            Else
                lb &= s
            End If
        End If
       
        If e.DataRow.isnull("相别") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("相别")
            If s.Length > 2 Then
                lb &= s.SubString(0,2)
            Else
                lb &= s
            End If
        End If
        If e.DataRow.isnull("膜厚") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("膜厚")
            If s.Length > 2 Then
                lb &= s.SubString(0,2)
            Else
                lb &= s
            End If
        End If
        If e.DataRow.isnull("外壳直径") Then
            lb &= "00"
        Else
            Dim s As String = e.DataRow("外壳直径")
            If s.Length > 2 Then
                lb &= s.SubString(0,2)
            Else
                lb &= s
            End If
        End If
        If e.DataRow("产品编号").StartsWith(lb) = False '如果单据编号前缀不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("max(产品编号)", "产品编号 like '" & lb & "%' and _Identify <> " & e.DataRow("_Identify"))  '取得该类别的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(lb.length,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("产品编号") = lb & Format(idx,"000")
        End If
End Select

 回到顶部