我正在尝试创建一个遵循以下格式的自动生成的字段:
TREQ-YY-NNNN
YY是提交年份,NNNN是当年提交的n th 表格。例如:
TREQ-15-0001
TREQ-15-0002
TREQ-15-0003
TREQ-15-0004
TREQ-15-0005
TREQ-16-0001
TREQ-16-0002
我一直在尝试使用AutoNumber字段的Format属性,但在使用TREQ-"yy"-"0000
掩码时我会遇到奇怪的行为。我最终获得了TREQ-1899-01,TREQ-1900-02,TREQ-1900-03等值。
我有没有办法获得我想要的编号格式,或类似的东西?我是Access的新手,我还在尝试学习公式的正确语法。
答案 0 :(得分:1)
您可以使用Before Change data macro自动将键值分配给新记录,而不是使用自动编号字段(在新的一年开始时不会将自身重置为1
)它们被插入表中。宏看起来像这样:
<?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">yy</Argument>
<Argument Name="Value">Right(Year(Date()),2)</Argument>
</Action>
<Comment>Set default value in case no records found:</Comment>
<Action Name="SetLocalVar">
<Argument Name="Name">newSeq</Argument>
<Argument Name="Value">1</Argument>
</Action>
<LookUpRecord>
<Data Alias="z">
<Query>
<References>
<Reference Source="tblTREQ" />
</References>
<Results>
<Property Source="tblTREQ" Name="KeyField" />
</Results>
<Ordering>
<Order Direction="Descending" Source="tblTREQ" Name="KeyField" />
</Ordering>
</Query>
<WhereCondition>[KeyField] Like "TREQ-" & [yy] & "-*"</WhereCondition>
</Data>
<Statements>
<Action Name="SetLocalVar">
<Argument Name="Name">newSeq</Argument>
<Argument Name="Value">Val(Right([z].[KeyField],4))+1</Argument>
</Action>
</Statements>
</LookUpRecord>
<Action Name="SetField">
<Argument Name="Field">KeyField</Argument>
<Argument Name="Value">"TREQ-" & [yy] & "-" & Right("0000" &
[newSeq],4)</Argument>
</Action>
</Statements>
</If>
</ConditionalBlock>
</Statements>
</DataMacro>
</DataMacros>
答案 1 :(得分:1)
实际上,您不应该为此使用自动编号字段 - 它们旨在由系统生成的唯一编号,而不会受到用户干扰(只是为了确保每行都有要引用的唯一ID;它类似于GUID的前身),通常它们不会被发布。通常情况下,他们会简单地编号和#34;没有改变年份的概念。 (这就是1900年2月开始的原因。)
要生成您自己的(字符串!)键,您需要编写在post上生成键的代码。
答案 2 :(得分:0)
在表单中插入新的Text Box
,并在Control Source
标签的Data
字段属性中插入以下表达式:
="TREQ-" & Right(Year([DateSubmitted]),2) & "-" & Format([ID],"0000")
其中[DateSubmitted]
是您的日期字段,[ID]
是您的自动编号字段。
或者,您可以创建这样的本地查询:
SELECT Table1.ID, Table1.DateSubmitted, "TREQ-" & Right(Year([DateSubmitted]),2) & "-" & Format([ID],"0000") AS TreqNum
FROM Table1;
希望这会有所帮助