以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 新手,如何每增加一行出现一个带字母前缀的编号,不用表达式 (http://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.NameCase "类别" 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"
|
-- 作者:furan -- 发布时间:2013/10/7 10:21:00 -- 如下代码
Dim bh As String = "FA"
不好意识再请教一下,我想增加编号的长度,如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") |