以文本方式查看主题

-  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=40889)

--  作者:furan
--  发布时间:2013/10/5 8:36:00
--  新手,如何每增加一行出现一个带字母前缀的编号,不用表达式
图片点击可在新窗口打开查看
求代码

--  作者:有点甜
--  发布时间:2013/10/5 8:42:00
--  

 参考帮助。

 

http://www.foxtable.com/help/topics/2403.htm


--  作者:furan
--  发布时间:2013/10/5 8:49:00
--  
因功力太浅,试了若干次都失败了,qiu代码
[此贴子已经被作者于2013-10-5 8:53:56编辑过]

--  作者:有点甜
--  发布时间:2013/10/5 8:55:00
--  

 你直接在DataRowAdded事件加入代码

 

  e.Datarow("第一列") = "AAA" & e.Datarow("_Identify")


--  作者:furan
--  发布时间:2013/10/7 9:15:00
--  

假定有下图所示的一个表,编号根据类别生成,前两位为类别,后三位为顺序号:

要自动生成上面的编号,可以将DataColChanged事件代码设置为:

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

 

 

 

这段编码我不想用"类别" 列做前缀,只是想加上一个字母前缀“FA”


--  作者:有点甜
--  发布时间:2013/10/7 9:30:00
--  

 如下代码

 

Dim bh As String = "FA"
Dim idx As Integer = 1
Dim max As String = e.DataTable.Compute("Max(编号)","编号 like \'" & bh & "*\' and [_Identify] <> " & e.DataRow("_Identify"))
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
End If
e.DataRow("编号") = bh & Format(idx,"000")

 


--  作者:furan
--  发布时间:2013/10/7 10:21:00
--  
如下代码

 

Dim bh As String = "FA"
Dim idx As Integer = 1
Dim max As String = e.DataTable.Compute("Max(编号)","编号 like \'" & bh & "*\' and [_Identify] <> " & e.DataRow("_Identify"))
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
End If
e.DataRow("编号") = bh & Format(idx,"000")

 

不好意识再请教一下,我想增加编号的长度,如3位数"000"改为5位数"00000"

那相应的

  idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
如何调整,我试了几次都出现

图片点击可在新窗口打开查看

--  作者:furan
--  发布时间:2013/10/7 10:46:00
--  
给帮帮忙吧!
--  作者:tlliqi
--  发布时间:2013/10/7 10:47:00
--  
图看不见
--  作者:有点甜
--  发布时间:2013/10/7 10:48:00
--  
Dim bh As String = "FA"
Dim idx As Integer = 1
Dim max As String = e.DataTable.Compute("Max(编号)","编号 like \'" & bh & "*\' and [_Identify] <> " & e.DataRow("_Identify"))
If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(4,3)) + 1 \'获得最大编号的后三位顺序号,并加1
End If
e.DataRow("编号") = bh & Format(idx,"00000")