没有参照完整性的客户帐户 EDT
Customer account EDT without referential integrity
我为客户维护了一个table一些特定的配置信息。
此 table 的标识符是客户帐户,CustAccount
EDT。
现在我面临一个问题:有时必须在创建客户之前定义此配置信息。
有没有办法创建一个非限制性 EDT,它将与 CustAccount
相关(我们可以 select 现有账户中的值),但它允许现有账户以外的其他值?
是的。您想要查看 AOT 中使用基本枚举 TableGroupAll
的示例。对于您的情况,您可能会创建一个名为 TableAll
的新 EDT(存在于 AX2012 中)。
查看 \Data Dictionary\Tables\AssetDisposalParameters
的工作原理或使用 \Data Dictionary\Base Enums\TableGroupAll
的任何内容。
本质上它就像一个 2 字段键,您可以将 Table
+CustAccount
连接到 CustTable
,但 All
只是一个空白CustAccount
.
编辑: Here is an AX 2009 XPO example that you can quickly see working well.
另外,不要按照其他发帖人的建议去做。即使在 AX 2012 中,除非您有一些非常特殊的要求,否则您会想要执行与我建议的类似的操作。
您可以将 IgnoreEDTRelation
设置为 yes
。现在您可以在没有外键约束的情况下使用此 EDT。
对于查找部分...您需要在 form
.
上的 datasource
字段上覆盖方法 lookup
public void lookup(FormControl _formControl, str _filterStr)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), _formControl);
sysTableLookup.addLookupField(fieldNum(CustTable, AccountNum));
sysTableLookup.addLookupField(fieldNum(CustTable, CustGroup));
queryBuildDataSource = query.addDataSource(tableNum(CustTable));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
//super(_formControl, _filterStr);
}
How to: Add a Lookup Form to a Control
此 link 展示了如何向控件添加自定义查找。但更多的是 "clean" 覆盖数据源字段方法,这样如果您在使用此字段的表单上有多个控件,所有控件都将进行此查找。
我为客户维护了一个table一些特定的配置信息。
此 table 的标识符是客户帐户,CustAccount
EDT。
现在我面临一个问题:有时必须在创建客户之前定义此配置信息。
有没有办法创建一个非限制性 EDT,它将与 CustAccount
相关(我们可以 select 现有账户中的值),但它允许现有账户以外的其他值?
是的。您想要查看 AOT 中使用基本枚举 TableGroupAll
的示例。对于您的情况,您可能会创建一个名为 TableAll
的新 EDT(存在于 AX2012 中)。
查看 \Data Dictionary\Tables\AssetDisposalParameters
的工作原理或使用 \Data Dictionary\Base Enums\TableGroupAll
的任何内容。
本质上它就像一个 2 字段键,您可以将 Table
+CustAccount
连接到 CustTable
,但 All
只是一个空白CustAccount
.
编辑: Here is an AX 2009 XPO example that you can quickly see working well.
另外,不要按照其他发帖人的建议去做。即使在 AX 2012 中,除非您有一些非常特殊的要求,否则您会想要执行与我建议的类似的操作。
您可以将 IgnoreEDTRelation
设置为 yes
。现在您可以在没有外键约束的情况下使用此 EDT。
对于查找部分...您需要在 form
.
datasource
字段上覆盖方法 lookup
public void lookup(FormControl _formControl, str _filterStr)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(CustTable), _formControl);
sysTableLookup.addLookupField(fieldNum(CustTable, AccountNum));
sysTableLookup.addLookupField(fieldNum(CustTable, CustGroup));
queryBuildDataSource = query.addDataSource(tableNum(CustTable));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
//super(_formControl, _filterStr);
}
How to: Add a Lookup Form to a Control 此 link 展示了如何向控件添加自定义查找。但更多的是 "clean" 覆盖数据源字段方法,这样如果您在使用此字段的表单上有多个控件,所有控件都将进行此查找。