以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  同一个表格编号对应的物资自动编号  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99836)

--  作者:lzf808862
--  发布时间:2017/4/27 16:37:00
--  同一个表格编号对应的物资自动编号

希望下表中的表格编号对应的物资编号可以自动生成,

表格编号        物资编号 

201704-001 1

201704-001 2

201704-001 3

201704-002 1

201704-002 2


请问要如何修改以下代码,多谢!

If e.DataCol.Name = "表格编号" Then

    If e.DataRow.IsNull("表格编号") Then

        e.DataRow("物资编号") = Nothing

    Else

        Dim max As String

        Dim idx As Integer

        max = e.DataTable.Compute("Max(物资编号)","物资编号= #"& "# And [_Identify] <> " & e.DataRow("_Identify")) 

        If max > "" Then \'如果存在最大编号

            idx = CInt(max.Substring(3,3)) + 1 \'获得最大编号的后三位顺序号,并加1

        Else

            idx = 1 \'否则顺序号等于1

        End If

        e.DataRow("物资编号") = Format(idx,"000")

    End If

End If


--  作者:有点色
--  发布时间:2017/4/27 16:43:00
--  
If e.DataCol.Name = "表格编号" Then
    If e.OldValue <> Nothing Then
        Dim drs As List(Of DataRow) = e.DataTable.Select("表格编号 = \'" & e.OldValue & "\'", "_sortkey")
        For i As Integer = 1 To drs.count
            drs(i-1)("物资编号") = i
        Next
    End If
    If e.NewValue <> Nothing Then
        Dim drs As List(Of DataRow) = e.DataTable.Select("表格编号 = \'" & e.NewValue & "\'", "_sortkey")
        For i As Integer = 1 To drs.count
            drs(i-1)("物资编号") = i
        Next
    End If
End If

--  作者:lzf808862
--  发布时间:2017/4/27 16:49:00
--  
已解决,非常感谢!