设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 7160|回复: 10
打印 上一主题 下一主题

[表] 求“年份”+“记录序号”自动生成如2013-0001的数据递增格式做法

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-13 11:39:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 大尾巴牛 于 2013-1-14 20:23 编辑

本人初学access(从上周二上午9:30开始),目前的表中需建立一个“销售记录编号”字段,并设置为主键,要求是不重复的,可以排序、查询用,第一行为2013-0001,第二行为2013-0002,以此类推,最多不超过9999个数据,到明年设置为2014-0001......,以此类推。
各位大侠,该怎么做啊,不会需要用代码吧?
我刚注册,没办法弄回帖奖励,不过可以小小的其他奖励一下,比如说......。
{:soso_e113:}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
11#
发表于 2013-1-16 12:56:34 | 只看该作者
本帖最后由 todaynew 于 2013-1-16 13:04 编辑
大尾巴牛 发表于 2013-1-14 17:07
我总以为这个很简单的。

不是很简单,而是异常简单。

问题只在于你打算怎么折腾这个问题而已。比如你是想要对现有的记录编制一个有规律的编号?还是想要单独设置一个可以自增的编号字段?你是想在前台显式的解决新增问题?还是想在后台隐蔽的解决新增问题?由于要求的不同,处理的具体方法和手段有些许差异罢了。

如果只是想对现有记录编出一个号来,就非常的简单。假设你的数据表中至少包含这么两个字段:销售ID、销售日期,则:

select year(销售日期) & format(Dcount("*","销售表","year(销售日期)=" & year(销售日期) & " and 销售ID<=" & 销售ID ),"0000") as 销售单编号,* from 销售表

10#
 楼主| 发表于 2013-1-14 17:07:55 | 只看该作者
我总以为这个很简单的。
9#
 楼主| 发表于 2013-1-13 21:49:07 | 只看该作者
是不是改为“年份”+“行数”比较好解决呀,反正是从“2013-0001”开始的?
8#
发表于 2013-1-13 14:35:26 | 只看该作者
在标准模块中写一个自定义函数,然后在追加查询,或者其他地方引用这个函数即可。

Function newNum(MyDate as Date) as string
    '示例:insert into 销售表 (销售记录编号,销售日期,销售对象)
    '             values (newNum(#2013/1/15#),#2013/1/15#,'国际贸易公司')
    Dim str as string
    Dim num as long
    '取当年最大编号
    str=Nz(Dmax("销售记录编号","销售表","year(销售日期)=" & year(MyDate)),Format(year(MyDate),"0000") & "-0000")
    '取最大号中的数字部分
    num=val(right(str,4))
    '拼接新编号字符串,并返回函数值
    newNum=Format(year(MyDate),"0000") & "-" & format(num+1,"0000")
end function
7#
 楼主| 发表于 2013-1-13 14:21:37 | 只看该作者
能给我逐行解释一下吗?
6#
 楼主| 发表于 2013-1-13 13:54:31 | 只看该作者
Henry D. Sy 发表于 2013-1-13 12:20

It`s,really hard for me,I don`t understand at all.I beg your pardon,sir?
5#
发表于 2013-1-13 12:20:52 | 只看该作者
本帖最后由 Henry D. Sy 于 2013-1-13 12:26 编辑
哇老兄你好厉害,多谢多谢了,明天我去单位试一试!
话说我还有一张手机充值卡......
不过这个可以自动 ...
  1. Option Compare Database
  2. Option Explicit
  3. Dim strbh As String
  4. Dim intNo As Integer

  5. Private Sub Command4_Click()
  6.     Dim sSQL As String
  7.     If Not IsNull(Me.编号) And Not IsNull(Me.名称) Then
  8.         sSQL = "insert into 表1(编号,名称)values('" & strbh & "','" & Me.名称 & "')"
  9.         CurrentDb.Execute sSQL
  10.         sSQL = "delete from bh"
  11.         CurrentDb.Execute sSQL
  12.         sSQL = "insert into bh(bh)values(" & intNo & ")"
  13.         CurrentDb.Execute sSQL
  14.         MsgBox "OK"
  15.         Me.编号 = Null
  16.         Me.名称 = Null
  17.     End If
  18. End Sub

  19. Private Sub 名称_GotFocus()
  20.     intNo = Nz(DLookup("bh", "bh"))
  21.     intNo = intNo + 1
  22.     strbh = Format(Date, "yyyy") & "-" & Format(intNo, "0000")
  23.     Me.编号 = strbh
  24. End Sub
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
 楼主| 发表于 2013-1-13 11:55:36 | 只看该作者
Henry D. Sy 发表于 2013-1-13 11:45
format(date,"yyyy") &"-"& format(编号,"0000")
只是思路不是代码

哇老兄你好厉害,多谢多谢了,明天我去单位试一试!
话说我还有一张手机充值卡......
不过这个可以自动递增麽?
3#
 楼主| 发表于 2013-1-13 11:52:50 | 只看该作者
本帖最后由 大尾巴牛 于 2013-1-13 11:53 编辑

哇老兄你好厉害,多谢多谢了,明天我去单位试一试!
话说我还有一张手机充值卡......
不过这个可以自动递增麽?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-16 12:13 , Processed in 0.099651 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表