以文本方式查看主题

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

--  作者:seal51
--  发布时间:2015/5/27 10:09:00
--  自动编号的问题

\'---------形式号自动根据客户编号年份生成--------------------------------
Select e.DataCol.Name
    Case "形式日期","客户编号"
        If e.DataRow.isnull("形式号") Then
            If e.DataRow.IsNull("形式日期") OrElse e.DataRow.IsNull("客户编号") Then
                e.DataRow("形式号") = Nothing
            Else
                Dim d As Date = e.DataRow("形式日期")
                Dim bh As String = "SMPI-" & e.DataRow("客户编号") & "" & Format(d,"yy") & "" \'生成编号的前缀
               
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "形式号 like \'" & bh & "%\' And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(形式号)",flt) \'取得该年的相同客户编号的最大形式号
                If max > "" Then \'如果存在最大形式号
                    idx = CInt(max.Substring(bh.Length,2)) + 1 \'获得最大形式号的后两位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("形式号") = bh & Format(idx,"00")
            End If
        End If
End Select
\'---------形式号自动根据客户编号年份生成--------------------------------

 

 

自动形成的编号,问题是如果已经自动形成SMPI-AA-1501的编号, 过后发现客户编号选择错误, 把客户编号AA更改为BB, 但是编号还是SMPI-AA-1501, 而不是SMPI-BB-1501, 请老师答疑


--  作者:大红袍
--  发布时间:2015/5/27 10:11:00
--  

If e.DataRow.isnull("形式号") Then

 

这句代码去掉


--  作者:Bin
--  发布时间:2015/5/27 10:12:00
--  
If e.DataRow.isnull("形式号") Then

你判断了 空的时候才会进入IF条件.

当然你这样做也是不怎么科学.生成了之后就不应该随意修改了.  否则,如果其他条件不变,他会自己往下加. 原本是01    但是最大值是08  那么你改了.编号会自己变09




--  作者:seal51
--  发布时间:2015/5/27 17:09:00
--  
那应该如何欢好呢?
--  作者:大红袍
--  发布时间:2015/5/27 17:13:00
--  
 去掉就行。