我这里有一个非常基本的表,称为游戏。
数据如下:
[Id] [Description]
Id
列设置为自动递增,但是没有格式化我想要的方式。
示例数据如下:
[Id] [Description]
GM-001 Super Mario Bros.
GM-002 The Legend of Zelda
GM-003 Super Metroid
所需的结果是Id列看起来像这样:
GM-1 (Super Mario Bros.)
GM-1-1 (The Legend of Zelda)
GM-1-1-1 (Super Metroid)
我当前的格式化程序是“ GM-000”,但是即使尝试“ GM-0”也不起作用,“ GM-0-0”也不起作用。我知道这不是传统的自动增量,因此有没有一种方法可以将列自定义格式为所需的结果?
非常感谢您提出的基本问题。
答案 0 :(得分:1)
使用表格事件Before Change
生成ID
<?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">prefix</Argument>
<Argument Name="Value">"GM -"</Argument>
</Action>
<LookUpRecord>
<Data Alias="gm">
<Query>
<References>
<Reference Source="Game" Alias="gm"/>
</References>
<Results>
<Property Source="gm" Name="alternate_id"/>
</Results>
<Ordering>
<Order Direction="Descending" Source="gm" Name="alternate_id"/>
</Ordering>
</Query>
<WhereCondition>[gm].[alternate_id] Like [prefix] & "*"</WhereCondition>
</Data>
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">prefix</Argument>
<Argument Name="Value">[gm].[alternate_id] & "-"</Argument>
</Action>
</Statements>
</LookUpRecord>
<Action Name="SetField">
<Argument Name="Field">alternate_id</Argument>
<Argument Name="Value">[prefix] & 1</Argument>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
输出
表结构