Foxtable(狐表)用户栏目专家坐堂 → 新手,如何每增加一行出现一个带字母前缀的编号,不用表达式


  共有4237人关注过本帖树形打印复制链接

主题:新手,如何每增加一行出现一个带字母前缀的编号,不用表达式

帅哥哟,离线,有人找我吗?
furan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:537 威望:0 精华:0 注册:2013/3/5 15:50:00
新手,如何每增加一行出现一个带字母前缀的编号,不用表达式  发帖心情 Post By:2013/10/5 8:36:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/5 8:42:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
furan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:537 威望:0 精华:0 注册:2013/3/5 15:50:00
  发帖心情 Post By:2013/10/5 8:49:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/10/5 8:55:00 [只看该作者]

 你直接在DataRowAdded事件加入代码

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
furan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:537 威望:0 精华:0 注册:2013/3/5 15:50:00
  发帖心情 Post By: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”


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:537 威望:0 精华:0 注册:2013/3/5 15:50:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:52 积分:537 威望:0 精华:0 注册:2013/3/5 15:50:00
  发帖心情 Post By:2013/10/7 10:46:00 [只看该作者]

给帮帮忙吧!

 回到顶部
帅哥哟,离线,有人找我吗?
tlliqi
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:4 积分:80 威望:0 精华:0 注册:2013/10/7 10:44:00
  发帖心情 Post By:2013/10/7 10:47:00 [只看该作者]

图看不见

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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")

 回到顶部
总数 13 1 2 下一页