.net - 更改数据后自动对 Access 表中的记录重新编号

标签 .net database vb.net ms-access

这是我的数据示例:

enter image description here
ID - autonumber ~ 是他们的主键
Week - 小 pig 出生的那一周
Sow Order - 母 pig 数量

规则:
1. 如果仔 pig 在同一周出生,不管他们的母 pig 。仔 pig 编号继续
2. 如果下周有仔 pig 出生,编号返回到 0001 然后规则 1。

仔 pig 的添加方式是,week + sow + (number of pigles)。例如(10),week=01 & sow=01会产生10头0001到0010的仔 pig 。

问题是,如果用户在要添加的仔 pig 数量上有误怎么办?根据图片,01 01 有两只小 pig ,如果不是只有 2 只怎么办?比如说,它是 3。所以用户需要删除它,然后编号必须调整为..

01 | 01 | 0001  
01 | 01 | 0002  
01 | 01 | 0003  
01 | 02 | 0004  
01 | 02 | 0005 

做这种事情的正确方法是什么?

最佳答案

如果 Access 数据库版本至少为 Access 2010,则可以使用事件驱动的数据宏来强制执行编号方案。对于名为 [Piglets] 的表

PigletsTable.png

使用 [AfterInsert] 的数据宏:

AfterInsert.png

[更新后]:

AfterUpdate.png

[删除后]:

AfterDelete.png

和命名数据宏 [RenumberPiglets]:

RenumberPiglets.png

重新编号会自动进行,即使表格是从外部应用程序(例如 VB.NET 或 C#)更新的。

对于 Access 数据库版本 2007 及更早版本,类似的逻辑必须写入用于更新表的数据输入表单。

关于.net - 更改数据后自动对 Access 表中的记录重新编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21750591/

相关文章:

.net - CQRS 匹配事件和命令

日期时间字段上的 MySQL 索引不是 RANGE 类型,而是使用 INDEX 类型

html - 将 CSS 文件设置为私有(private)?

vb.net - 如何从另一个模块更改表单元素的属性

vb.net - 通过网站 IP 的 TCP 连接

c# - 为什么 C# 不推断我的泛型类型?

c# - 通过 C# 获取和设置初始化 : Jeffrey Richter, CLR 中的误解

c# - 使用 .Net 验证路径相等性

sql - 查询子串形成

vb.net - 将数字转换为字母数字 Excel 单元格引用