根据添加记录的年份创建顺序 ID 值
Create sequential ID value based on the year that a record is added
我正在处理 Access 2013 数据库,该数据库会将不同的电线杆输入数据库并与其他属性链接。每个极点都有一个唯一的全局 ID,为了简化工作,我想添加另一个更简单的唯一 ID。我希望在将新杆导入数据库时自动填充此字段。 ID 如下所示:
SAC(年)-(递增数字,不能重复)
例如。 SAC16-20(这将是 2016 年进入数据库的第 20 个极点)
例如。 SAC15-2536(将是2015年进入的第2536个极点)
如果有人能帮我生成一些代码来使这个自动填充 ID 字段工作,我将不胜感激。
对于 Access 版本 2010 及更高版本,您可以使用事件驱动 data macro 来生成顺序 ID。例如,假设您有一个名为 [poledata] 的 table。在设计视图中打开它并添加两个字段:
alternate_id_seq – 数字(长整型)
alternate_id – 文本(20)
保存对 table 的更改,然后切换到数据表视图。
在 Access 功能区中,切换到 "Table Tools > Table" 选项卡并单击 "Before Change"
然后输入下面的宏...
...或将以下内容XML粘贴到宏编辑器中window
<?xml version="1.0" encoding="utf-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
<DataMacro Event="BeforeChange">
<Statements>
<ConditionalBlock>
<If>
<Condition>[IsInsert]</Condition>
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">next_seq</Argument>
<Argument Name="Value">1</Argument>
</Action>
<Action Name="SetLocalVar">
<Argument Name="Name">prefix</Argument>
<Argument Name="Value">"SAC" & Year(Date()) Mod 100 & "-"</Argument>
</Action>
<LookUpRecord>
<Data Alias="pd">
<Query>
<References>
<Reference Source="poledata" Alias="pd" />
</References>
<Results>
<Property Source="pd" Name="alternate_id_seq" />
</Results>
<Ordering>
<Order Direction="Descending" Source="pd" Name="alternate_id_seq" />
</Ordering>
</Query>
<WhereCondition>[pd].[alternate_id] Like [prefix] & "*"</WhereCondition>
</Data>
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">next_seq</Argument>
<Argument Name="Value">[pd].[alternate_id_seq]+1</Argument>
</Action>
</Statements>
</LookUpRecord>
<Action Name="SetField">
<Argument Name="Field">alternate_id_seq</Argument>
<Argument Name="Value">[next_seq]</Argument>
</Action>
<Action Name="SetField">
<Argument Name="Field">alternate_id</Argument>
<Argument Name="Value">[prefix] & [next_seq]</Argument>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
现在,当新行添加到 table 时,[alternate_id_seq] 和 [alternate_id] 列将自动填充。
我正在处理 Access 2013 数据库,该数据库会将不同的电线杆输入数据库并与其他属性链接。每个极点都有一个唯一的全局 ID,为了简化工作,我想添加另一个更简单的唯一 ID。我希望在将新杆导入数据库时自动填充此字段。 ID 如下所示:
SAC(年)-(递增数字,不能重复)
例如。 SAC16-20(这将是 2016 年进入数据库的第 20 个极点)
例如。 SAC15-2536(将是2015年进入的第2536个极点)
如果有人能帮我生成一些代码来使这个自动填充 ID 字段工作,我将不胜感激。
对于 Access 版本 2010 及更高版本,您可以使用事件驱动 data macro 来生成顺序 ID。例如,假设您有一个名为 [poledata] 的 table。在设计视图中打开它并添加两个字段:
alternate_id_seq – 数字(长整型)
alternate_id – 文本(20)
保存对 table 的更改,然后切换到数据表视图。
在 Access 功能区中,切换到 "Table Tools > Table" 选项卡并单击 "Before Change"
然后输入下面的宏...
...或将以下内容XML粘贴到宏编辑器中window
<?xml version="1.0" encoding="utf-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
<DataMacro Event="BeforeChange">
<Statements>
<ConditionalBlock>
<If>
<Condition>[IsInsert]</Condition>
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">next_seq</Argument>
<Argument Name="Value">1</Argument>
</Action>
<Action Name="SetLocalVar">
<Argument Name="Name">prefix</Argument>
<Argument Name="Value">"SAC" & Year(Date()) Mod 100 & "-"</Argument>
</Action>
<LookUpRecord>
<Data Alias="pd">
<Query>
<References>
<Reference Source="poledata" Alias="pd" />
</References>
<Results>
<Property Source="pd" Name="alternate_id_seq" />
</Results>
<Ordering>
<Order Direction="Descending" Source="pd" Name="alternate_id_seq" />
</Ordering>
</Query>
<WhereCondition>[pd].[alternate_id] Like [prefix] & "*"</WhereCondition>
</Data>
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">next_seq</Argument>
<Argument Name="Value">[pd].[alternate_id_seq]+1</Argument>
</Action>
</Statements>
</LookUpRecord>
<Action Name="SetField">
<Argument Name="Field">alternate_id_seq</Argument>
<Argument Name="Value">[next_seq]</Argument>
</Action>
<Action Name="SetField">
<Argument Name="Field">alternate_id</Argument>
<Argument Name="Value">[prefix] & [next_seq]</Argument>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
现在,当新行添加到 table 时,[alternate_id_seq] 和 [alternate_id] 列将自动填充。