[求助] 如何根据登记日期自动生成编号

liu0958 2017-07-12 09:03:43

Text1 填写日期(年,月,日)
Text2 自动生成编号
db_sjk.mdb 为access数据库
tb_in 为数据表,“登记日期”和“登记编号” 为字段名

要求,在Text1中填写日期,按照年份和月份查询 tb_in 表中“登记日期”下所有相同年月在“登记编号” 中的编号,如果同年同月编号不存在,在Text2自动生成一个“djyyyymm-0001”(dj为字符,yyyymm为年月,-0001为编号)的编号。

如果存在编号,根据Text1填写的日期,提取“登记编号” 下同年同月最大编号然后加1,在Text2自动生成一个新编号。

重点,每年和每月的编号都是从0001开始。

本人是菜鸟,希望大神们写个完整代码以便学习研究,谢谢。



...全文
864 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu0958 2017-07-18
  • 打赏
  • 举报
回复
谢谢各位,问题已解决
of123 2017-07-17
  • 打赏
  • 举报
回复
引用 3 楼 liu0958 的回复:
[quote=引用 1 楼 of123 的回复:] 查询的 SQL 语句是
"SELECT TOP 1 登记编号 FROM tb_in WHERE 登记编号 LIKE 'dj" & Format(Text1.Text, "yyyymm") & "' ORDER BY 登记编号 DESC“
由于使用了 ORDER BY 子句,可以直接使用 recordset 对象的 RecordNumber 属性,1 为查到,0 为没有。 假定你的 recordset 对象变量是 rs,那么 rs!登记编号 中的字符串就是最大编号。
你好老师,由于登记编号是DJyyyymm-0001格式,后面的编号如何体现出来?另外,登记可能存在本月要补充输入上个月的数据,例如七月补录六月份资料,在Text1.Text要填写六月份,如何在月份次序颠倒的情况下,在Text2.Text将上个月份的最大编号+1,可否给个详细代码以便学习研究?谢谢[/quote]没关系,它是到数据库表中去查的,与你当前日期无关。
无·法 2017-07-16
  • 打赏
  • 举报
回复
建议把0001单独作为一个字段,后面有相同的就新增记录,取出这个最大的加1,不要用字符串这样拼接,如果前台要显示可以拼接显示出来。数据库这样存放不妥的,不能发挥数据库的优势。
liu0958 2017-07-15
  • 打赏
  • 举报
回复
引用 1 楼 of123 的回复:
查询的 SQL 语句是
"SELECT TOP 1 登记编号 FROM tb_in WHERE 登记编号 LIKE 'dj" & Format(Text1.Text, "yyyymm") & "' ORDER BY 登记编号 DESC“
由于使用了 ORDER BY 子句,可以直接使用 recordset 对象的 RecordNumber 属性,1 为查到,0 为没有。 假定你的 recordset 对象变量是 rs,那么 rs!登记编号 中的字符串就是最大编号。
你好老师,由于登记编号是DJyyyymm-0001格式,后面的编号如何体现出来?另外,登记可能存在本月要补充输入上个月的数据,例如七月补录六月份资料,在Text1.Text要填写六月份,如何在月份次序颠倒的情况下,在Text2.Text将上个月份的最大编号+1,可否给个详细代码以便学习研究?谢谢
脆皮大雪糕 2017-07-13
  • 打赏
  • 举报
回复
用order by 除了要扫描所有符合条件的的数据,还要做个排序。 其实只要根据日期,选择年、月特征符合的记录数加一就行了,从效率看,只要命中条件的记录计数即可,省了排序操作。当然,前提是所有的编号都是按照你这个程序生成的,没有中间跳号的情况。 "SELECT (count(1) + 1) as 编号 FROM tb_in WHERE 登记编号 LIKE 'dj" & Format(Text1.Text, "yyyymm") & "%'"
of123 2017-07-13
  • 打赏
  • 举报
回复
查询的 SQL 语句是
"SELECT TOP 1 登记编号 FROM tb_in WHERE 登记编号 LIKE 'dj" & Format(Text1.Text, "yyyymm") & "' ORDER BY 登记编号 DESC“
由于使用了 ORDER BY 子句,可以直接使用 recordset 对象的 RecordNumber 属性,1 为查到,0 为没有。 假定你的 recordset 对象变量是 rs,那么 rs!登记编号 中的字符串就是最大编号。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧