以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  自动生成编号  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=113281)

--  作者:雅痞123456
--  发布时间:2018/1/12 14:39:00
--  自动生成编号
Select e.DataCol.Name
    Case "设备名称"
        If e.DataRow.IsNull("设备名称") Then
            e.DataRow("厂内编号") = Nothing
        Else
            Dim lb As String = e.DataRow("设备名称")
            Dim ab As String = e.DataRow("设备型号")
            If e.DataRow("厂内编号").StartsWith(lb) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(厂内编号)","设备名称 = \'" & lb & "\' & "设备型号 = \'" & ab & "\' & [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("厂内编号") = lb & ab & Format(idx,"000")
            End If
        End If
End Select


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

哪位大神帮我看一下  这个代码哪块有问题  怎么就改不对了呢

--  作者:2900819580
--  发布时间:2018/1/12 14:47:00
--  
Select e.DataCol.Name
    Case "设备名称","设备型号"

        If e.DataRow.IsNull("设备名称") Then
            e.DataRow("厂内编号") = Nothing
        Else
            Dim lb As String = e.DataRow("设备名称")
            Dim ab As String = e.DataRow("设备型号")
            If e.DataRow("厂内编号").StartsWith(lb & ab) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(厂内编号)","设备名称 = \'" & lb & "\' & "设备型号 = \'" & ab & "\' & [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("厂内编号") = lb & ab & Format(idx,"000")
            End If
        End If
End Select
[此贴子已经被作者于2018/1/12 14:48:05编辑过]

--  作者:雅痞123456
--  发布时间:2018/1/12 15:00:00
--  
   max = e.DataTable.Compute("Max(厂内编号)","设备名称 = \'" & lb & "\' & "设备型号 = \'" & ab & "\' & [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号


 老是提醒我这段代码有问题

--  作者:2900819580
--  发布时间:2018/1/12 15:02:00
--  
max = e.DataTable.Compute("Max(厂内编号)","设备名称 = \'" & lb & "\' and 设备型号 = \'" & ab & "\' and [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
[此贴子已经被作者于2018/1/12 15:02:27编辑过]

--  作者:有点甜
--  发布时间:2018/1/12 15:06:00
--  
Select e.DataCol.Name
    Case "设备名称","设备型号"

        If e.DataRow.IsNull("设备名称") Then
            e.DataRow("厂内编号") = Nothing
        Else
            Dim lb As String = e.DataRow("设备名称")
            Dim ab As String = e.DataRow("设备型号")
            Dim bh as string = lb & ab
            If e.DataRow("厂内编号").StartsWith(bh) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(厂内编号)","设备名称 = \'" & lb & "\' and 设备型号 = \'" & ab & "\'  and [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(bh.length,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("厂内编号") = bh & Format(idx,"000")
            End If
        End If
End Select

--  作者:雅痞123456
--  发布时间:2018/1/12 15:54:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看