Foxtable(狐表)用户栏目专家坐堂 → [求助]自动编号 已上传附件


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

主题:[求助]自动编号 已上传附件

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


加好友 发短信
等级:婴狐 帖子:32 积分:398 威望:0 精华:0 注册:2012/10/20 18:09:00
[求助]自动编号 已上传附件  发帖心情 Post By:2012/12/7 21:42:00 [只看该作者]

 

项目名称 + 年份 + 编号

 

例如

HH12-1               2012年第1份

HH12-2               2012年第2份

HH12-3               2012年第3份

HH13-1               2013年第1份

HH13-2               2013年第2份

HH14-1               2013年第1份

 

 

 

目前没有考虑到跳年编号问题; 简单用表达式: 项目编号 +SubString(Convert(委托日期,'System.String'),3,2)+'-' + Convert([_Identify], 'System.String')

 

编号依据录入日期自动生成,编号依次+1  跳过年份编号归1 重新递加

 

如此请问 表达式 或者代码 如何实现? 感谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动编号.rar

[此贴子已经被作者于2012-12-9 22:37:26编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/8 10:10:00 [只看该作者]

 这种的话,需要通过代码去完成的。可以先参考一下帮助。不行的话,就上传例子帮你实现。

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

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


加好友 发短信
等级:婴狐 帖子:32 积分:398 威望:0 精华:0 注册:2012/10/20 18:09:00
  发帖心情 Post By:2012/12/8 23:50:00 [只看该作者]

自动编号  样品编号  委托日期
 TH12-1   TH          2012-2-15
  TH12-2   TH         2012-5-25
  TH13-1    TH         2013-1-5
   TH13-2   TH         2013-3-9
   TH14-1    TH         2014-5-6
想要实现如上效果
逢跳年 编号 归1  不跳年 编号+1
 
 
If e.DataCol.Name = "委托日期" Then
    If e.DataRow.IsNull("委托日期") Then
        e.DataRow("自动编号") = Nothing
    Else
        Dim y As String = Format(e.DataRow("委托日期"),"yyyy") '取得编号的年号
        Dim bh As String ="样品编号" & y.SubString(3,2)'取得编号的前缀
        Dim max As String=e.DataTable.Compute("Max(自动编号)","委托日期 = #" & e.DataRow("委托日期") & "#") '取得该年的最大自动编号
        Dim idx As Integer
        Dim va As String() = CStr(max).Split("-")
        If e.DataRow("自动编号").StartsWith(bh) = False '如果编号的前缀不符
            idx = 1 '否则顺序号等于1
        Else
            idx = CInt(va(1)) + 1 '获得最大编号的后三位顺序号,并加1
            e.DataRow("自动编号") = bh & "-" & Format(idx,"0000")
        End If
    End If
End If
 
代码哪里写错了 提示 调用目标发生异常 高手帮忙看下 ,谢谢 了 !  另外 代码 里面 我 貌似  少加了行  代码 ,同时要 判断 委托日期 和 样品编号 不为空 才能 运行代码
[此贴子已经被作者于2012-12-8 23:58:42编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/9 0:14:00 [只看该作者]

 楼主,这样吧,你做一个简单的例子,输入少量数据,上传上来。这样几分钟就可以解决了。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/9 0:45:00 [只看该作者]

你这样试一下吧。

 If e.DataCol.Name = "委托日期" Then
    If e.DataRow.IsNull("委托日期") Then
        e.DataRow("自动编号") = Nothing
    Else
        Dim y As String = Format(e.DataRow("委托日期"),"yyyy") '取得编号的年号
        Dim bh As String = e.DataRow("样品编号") & y.SubString(3,2)'取得编号的前缀
        Dim max As String=e.DataTable.Compute("Max(自动编号)","自动编号 like '" & bh & "*'") '取得该年的最大自动编号
        Dim idx As Integer

        If max = "" '如果编号的前缀不符
            idx = 1 '否则顺序号等于1
        Else
            Dim va As String() = CStr(max).Split("-")
            idx = CInt(va(1)) + 1 '获得最大编号的后三位顺序号,并加1
            e.DataRow("自动编号") = bh & "-" & Format(idx,"0000")
        End If
    End If
End If

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


加好友 发短信
等级:婴狐 帖子:32 积分:398 威望:0 精华:0 注册:2012/10/20 18:09:00
  发帖心情 Post By:2012/12/9 16:48:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动编号.rar

上传了附件 帮忙看下 谢谢!


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/10 10:14:00 [只看该作者]

 Ok了,请看附件。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动编号.table



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


加好友 发短信
等级:婴狐 帖子:32 积分:398 威望:0 精华:0 注册:2012/10/20 18:09:00
  发帖心情 Post By:2012/12/10 21:50:00 [只看该作者]

非常感谢! 林你太厉害了!

 回到顶部