MS Access-如何自定义格式的自动递增字段?

时间:2018-08-06 16:19:44

标签: vba ms-access-2010

我这里有一个非常基本的表,称为游戏。

数据如下:

[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”也不起作用。我知道这不是传统的自动增量,因此有没有一种方法可以将列自定义格式为所需的结果?

非常感谢您提出的基本问题。

1 个答案:

答案 0 :(得分:1)

使用表格事件Before Change生成ID

enter image description here


<?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] &amp; "*"</WhereCondition>
                            </Data>
                            <Statements>
                                <Action Name="SetLocalVar">
                                    <Argument Name="Name">prefix</Argument>
                                    <Argument Name="Value">[gm].[alternate_id] &amp; "-"</Argument>
                                </Action>
                            </Statements>
                        </LookUpRecord>
                        <Action Name="SetField">
                            <Argument Name="Field">alternate_id</Argument>
                            <Argument Name="Value">[prefix] &amp; 1</Argument>
                        </Action>
                    </Statements>
                </If>
            </ConditionalBlock>
        </Statements>
    </DataMacro>
</DataMacros>

输出

enter image description here


表结构

enter image description here