设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 7161|回复: 10

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

[复制链接]
发表于 2013-1-13 11:39:49 | 显示全部楼层 |阅读模式
本帖最后由 大尾巴牛 于 2013-1-14 20:23 编辑

本人初学access(从上周二上午9:30开始),目前的表中需建立一个“销售记录编号”字段,并设置为主键,要求是不重复的,可以排序、查询用,第一行为2013-0001,第二行为2013-0002,以此类推,最多不超过9999个数据,到明年设置为2014-0001......,以此类推。
各位大侠,该怎么做啊,不会需要用代码吧?
我刚注册,没办法弄回帖奖励,不过可以小小的其他奖励一下,比如说......。
{:soso_e113:}
发表于 2013-1-13 11:45:59 | 显示全部楼层
format(date,"yyyy") &"-"& format(编号,"0000")
只是思路不是代码
 楼主| 发表于 2013-1-13 11:52:50 | 显示全部楼层
本帖最后由 大尾巴牛 于 2013-1-13 11:53 编辑

哇老兄你好厉害,多谢多谢了,明天我去单位试一试!
话说我还有一张手机充值卡......
不过这个可以自动递增麽?
 楼主| 发表于 2013-1-13 11:55:36 | 显示全部楼层
Henry D. Sy 发表于 2013-1-13 11:45
format(date,"yyyy") &"-"& format(编号,"0000")
只是思路不是代码

哇老兄你好厉害,多谢多谢了,明天我去单位试一试!
话说我还有一张手机充值卡......
不过这个可以自动递增麽?
发表于 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
 楼主| 发表于 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?
 楼主| 发表于 2013-1-13 14:21:37 | 显示全部楼层
能给我逐行解释一下吗?
发表于 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
 楼主| 发表于 2013-1-13 21:49:07 | 显示全部楼层
是不是改为“年份”+“行数”比较好解决呀,反正是从“2013-0001”开始的?
 楼主| 发表于 2013-1-14 17:07:55 | 显示全部楼层
我总以为这个很简单的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 14:51 , Processed in 0.095441 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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