以文本方式查看主题

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

--  作者:wangguiwang
--  发布时间:2015/11/10 10:02:00
--  自动编号出错
各位老师:请帮忙看下为什么如下代码自动编号会出错,第一条明细是正常的,到了第二条以后就都是一样的编码了,而且一下从001跳到-019了。
图片点击可在新窗口打开查看此主题相关图片如下:自动编号出错.jpg
图片点击可在新窗口打开查看

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(2,3)) + 1 \'获得最大出入库单据号明细的后三位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("出入库单据号明细") = lb & Format(idx,"000")
            End If
        End If
End Select



--  作者:大红袍
--  发布时间:2015/11/10 10:09:00
--  
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
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("出入库单据号明细") = lb & Format(idx,"000")
            End If
        End If
End Select

--  作者:wangguiwang
--  发布时间:2015/11/10 10:21:00
--  
大红袍考师:我用你的这个代码试了下,还是会出错,尾号就都是001了,请帮忙再看下是哪里出了问题。谢谢。
图片点击可在新窗口打开查看此主题相关图片如下:重复编号.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2015/11/10 10:23:00
--  
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 & "-" & Format(idx,"000")
            End If
        End If
End Select

--  作者:wangguiwang
--  发布时间:2015/11/10 10:41:00
--  
终于可以了,非常谢谢