我是Dynamics AX的新手,并且非常努力地学习它。我创建了一个新表,一个显示表的新表单。一切都很好......
表将ID,NAME和SURNAME作为列。我希望用户输入他们的姓名,但我希望他们的ID是唯一的,由系统创建。所以我禁用了用户输入的ID。
我已将ID作为主键但我无法弄清楚如何使其自动增加。
请你给我一些暗示吗?
答案 0 :(得分:4)
我遇到了同样的问题。我找到了this explanation on MSDN。在this website下面找到创建数字序列的步骤。
<强>已更新强>
第1步
创建EDT - 字符串类型
所以,我创建了一个名为“AXSeqEDT”的EDT,标签为“AX Seq”
拖入表格(FirstTable)字段
第2步
现在创建一个新的数字序列
创建num Sequence的路径是
“模块::组织管理.......常见.........数字序列......数字序列”
点击新建(编号顺序)
现在将打开数字序列表格----包含4个部分。
第1节。标识.....指定NumberSeqCode和Name
第2节。范围参数...从下拉列表中选择范围
第3节。细分....添加常量和字母数字(通过点击添加按钮并从下拉列表中选择)
第4节。常规......连续的复选标记和指定“最小和最大和下一个”字段
现在保存您的设置
第3步
现在将相应的手动代码添加到类 - NumberSeqModuleURMODULE
和表 - URMODULEParameters。
所以我基于HRM模块创建数字序列.....所以我使用的是NumberSeqModuleHRM类和表HRMParameters
现在转到AOT --- Classes-NumberSeqModuleHRM --- loadModule()
注意::这里我们可以添加查看现有实现的代码
添加的代码是::
/* setup discussion number sequence - it is global */
datatype.parmDatatypeId(extendedtypenum(AXSeqEDT));
datatype.parmReferenceHelp(literalstr("@SYS32633"));
datatype.parmWizardIsContinuous(true);
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmWizardHighest(99999);
datatype.parmSortField(12);
this.create(datatype);
现在转到AOT ---表--- HRMParameters ---方法-----点击新方法
添加代码在新方法
中注意::这里我们可以添加查看现有实现的代码
添加的代码
static client server NumberSequenceReference numRefAXSeqEDT()
{
return NumberSeqReference::findReference(extendedTypeNum(AXSeqEDT));
}
第4步
为了将我们新创建的数字序列引用添加到我们的模块,请编写以下作业并执行它
以下作业对于运行很重要,因为没有它,您的新数字序列将无法用于参数下的数字序列表单。这是AX 2009的行为更改,其中所有新的数字序列在重新启动Dynamic AX时加载。在AX 2012中,在安装时为系统创建了所有数字序列,因此重新启动AOS不会影响加载新的数字序列,这就是运行作业以加载新数字序列的重要原因。
The Job中添加的代码
static void jobName(Args _args)
{
NumberSeqModuleHRM NumberSeqModuleHRM = new NumberSeqModuleHRM();
;
NumberSeqModuleHRm.load();
}
第5步
执行Above Job后,我们新创建的编号序列参考“AX Seq”将被添加到HRM模块----编号序列设置表单
让我们检查一下
现在点击Number Sequence并识别新创建的Number Seq Reference
识别编号序列参考后----将编号序列编码分配给编号序列参考.....从下拉列表中选择
第6步
现在在Form Datasource方法的Create方法中添加Code
Goto-AOT-Forms-FirstForm-Datasources-FirstTable-Methods-Override方法(创建)
public void create(boolean _append = false)
{
;
super(_append);
FirstTable.AXSeqEDT = NumberSeq::newGetNum(HRMParameters::numRefAXSeqEDT(),true).num();
}
第7步
现在保存所有设置.....现在打开我们的表单-FirstForm