Foxtable(狐表)用户栏目专家坐堂 → 自动编号的求助


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

主题:自动编号的求助

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
自动编号的求助  发帖心情 Post By:2012/9/10 8:01:00 [只看该作者]

想做一个新增记录的自动编号,帮助里的例子是在“日期”列的基础上做判断

我想在不用“日期”列的情况下,对自动编号做如下设置:

格式为:XS20120910001 (XS是前缀 20120910是生成该条记录时的日期  001是流水号)

望能得到帮助,谢谢!

 

 


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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2012/9/10 8:29:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/10 9:45:00 [只看该作者]

刚看了帮助中关于编号的代码 ,发现有点问题

 

 

If e.DataCol.Name = "日期" Then
    If
e.DataRow.IsNull("日期") Then
        e.
DataRow("编号") = Nothing
    Else
        Dim
bh As String = Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
       
If e.DataRow("编号").StartsWith(bh) = False 这里是不是少了一个  then

            Dim max As String
           
Dim idx As Integer
            max = e.
DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "#") '编号列是string型的列 怎么能用Max求值呢?  
           
If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(
9,3)) + 1 '获得最大编号的后三位顺序号,并加1
           
Else
                idx =
1 '否则顺序号等于1
           
End If
            e.
DataRow("编号") = bh & "-" & Format(idx,"000")
        End
If
    End
If
End
If


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


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/10 9:47:00 [只看该作者]

我用这个代码 实验测试 max语句不能正常工作,每次得到是 年月日-001

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/10 10:56:00 [只看该作者]

这段帮助我看了 我在问题里也写了  帮助的那个例子 是有“日期”列的 在日期列的基础上做判断的

我想不通过“日期”列 在新增记录时,根据今天的日期来做判断


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/10 13:17:00 [只看该作者]

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = "XS" & Format(e.DataRow("日期"),"yyyyMMdd") '取得编号的8位前缀
        If e.DataRow("编号").StartsWith(bh) = False '如果编号的前8位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期") & "#") '取得该天的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(10,3)) + 1 '获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("编号") = bh &  Format(idx,"000")
        End If
    End If
End If

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/10 14:55:00 [只看该作者]

狐爸,我的表里 没有“日期”这个列啊 , 怎么写代码?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/10 15:09:00 [只看该作者]

将下面的代码加入DataRowAdding事件:

 

Dim bh As String = "XS" & Format(Date.Today,"yyyyMMdd")
Dim max As String
Dim idx As Integer
max = e.DataTable.Compute("Max(编号)","编号 Like '" & bh & "*'" )
If max > "" Then '如果存在最大编号
    idx = CInt(max.Substring(10,3)) + 1 '获得最大编号的后三位顺序号,并加1
Else
    idx = 1 '否则顺序号等于1
End If
e.DataRow("编号") = bh &  Format(idx,"000")


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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/9/10 16:13:00 [只看该作者]

好用 感谢狐爸回复!

 回到顶部