【问题标题】:Custom user autonumber自定义用户自动编号
【发布时间】:2016-06-05 02:58:30
【问题描述】:

我一直在寻找解决我遇到的这个自动编号问题的方法。好像哪里都没有明确的答案。

我有一个包含文本字段的表单。

我希望此表单显示表格中某个字段的下一个数字。

示例:该表包含 3 条记录,其值为 D001、D002、D003

表单用于输入新记录(新数据)。所以下次我输入数据时,我希望 D004 自动显示在表单中数据代码的文本字段中。

如何做到这一点?

【问题讨论】:

  • 您使用的是哪个 DBMS?您使用哪种编程语言?
  • 对不起,我没有提到.... Access 2010... VBA 和 SQL....

标签: sql vba ms-access autonumber


【解决方案1】:

可以使用表单的 BeforeInsert 事件:

Me!AutoNumber.Value = Format(Val(Nz(Right(DMax("[AutoNumber]", "[YourTable]"), 3), 0)) + 1, "\D000")

【讨论】:

  • 感谢 Gustav .. 完美运行.. 但是...... 只有输入第一个值时出现问题......当表格为空时失败......所以无法输入 D001.. .. 它也不适用于 BeforeInsert 事件,所以我在表单打开事件中使用它......
  • 好的。添加了 Nz 以处理空表。见编辑。
  • 啊..完美!!!现在它完美地工作了......正是我想要的......非常感谢古斯塔夫!!!!
【解决方案2】:

其中一种方法是创建一个函数来处理您遇到的自动编号问题

create function NextAutoNumber() 
returns char(4) 
as 
begin 
    declare @lastval char(4) 
    set @lastval = (select max(autoNumber) from table) 
    if @lastval is null set @lastval = 'D001' 

    declare @i int set @i = right(@lastval,3) + 1 return 'C' + right('00' + convert(varchar(10),@i),3) 
end

这样您就可以随时调用该函数并插入记录所需的自动编号

【讨论】:

  • 您如何知道 saranmc 正在使用哪个 DBMS?哪个 DBMS 是您的答案?
  • 是的,我的错...可以在 Access 中使用吗?作为 VBA??
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2019-10-10
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多