Axapta Dynamics Ax 2012对话框-提问培训材料

Axapta Dynamics Ax 2012对话框-提问培训材料,axapta,microsoft-dynamics,x++,dynamics-ax-2012,Axapta,Microsoft Dynamics,X++,Dynamics Ax 2012,在培训材料中,我正在查看它设置了3个对话框字段,因为suchI还显示了表格声明: CustTable custTable; dlgCust = dlg.addField(extendedTypeStr(CustVendAc),"Customer account"); dlgGrp = dlg.addField(extendedTypeStr(CustGroupId)); dlgCur = dlg.addField(extendedTypeStr(CurrencyCode)); 然后尝试将

在培训材料中,我正在查看它设置了3个对话框字段,因为suchI还显示了表格声明:

CustTable custTable;

dlgCust = dlg.addField(extendedTypeStr(CustVendAc),"Customer account");
dlgGrp  = dlg.addField(extendedTypeStr(CustGroupId));
dlgCur  = dlg.addField(extendedTypeStr(CurrencyCode));
然后尝试将对话框中的值保存到custTable中

custTable.AccountNum = dlgCust.value();
custTable.CustGroup = dlgGrp.value();
custTable.Currency = dlgCur.value();
为什么将DialogFields设置为一种扩展类型只是为了将其移动到另一种类型?CustVendAc、CustGroupId和CurrencyCode都不存在于CustTable中。这样做有什么意义

一个附带问题是:

我为此工作的实验室问我:

创建一个新类,该类将提示用户输入新客户 帐户编号、名称和所有必填字段 客户记录。使用现有的方法验证之前的记录 将记录插入数据库。如果不是所有的数据 输入时,引发包含错误消息的错误异常: 请输入所有必填字段。必须使用创建记录的代码 在try/catch语句中。这必须包括对 错误异常类型并显示消息:发生错误。 请再试一次

它表示获取帐号、名称以及客户记录必需的所有字段。我该如何自己决定呢?我查看了表格和新的客户表单,它要求提供比他们的解决方案提供的更多的信息。。。那么如何确定要请求哪些字段呢?

dlgCust不是扩展数据类型,而是类对象。DialogField

CustTable.AccountNum是一个表。用于存储对象中的值的字段。

dlgCust不是ExtendedDataType,它是一个类对象。DialogField

CustTable.AccountNum是一个表。用于存储对象中的值的字段。

CustTable中的CustTable.AccountNum字段属于CustAccount类型,它扩展了CustVendAc EDT。所以基本上,它们都是同一类型的

CustTable.CustGroup属于CustGroupId类型,因此可以

CustTable.Currency是CustCurrencyCode类型,它扩展了CurrencyCode

在插入之前,请使用现有方法验证记录 记录到数据库中

使用custTable.validateWrite方法验证是否可以创建记录。如果缺少一些必需的记录,它将返回false,并显示带有错误消息的infolog

它表示获取帐号、名称以及客户记录必需的所有字段。我该如何自己决定呢

表中的每个字段都具有必填属性

代码如下所示:

try
{
    custTable.initValue();

    custTable.AccountNum = dlgCust.value();
    custTable.CustGroup = dlgGrp.value();
    custTable.Currency = dlgCur.value();

    //Other mendatory fields like customer name

    if (custTable.validateWrite())
    {
       ttsBegin;
       custTable.insert();
       ttsCommit;
    }
    else
    {
       throw error("Please enter all required fields");
    }
}
catch
{
    error("An error occurred. Please try again");
}
CustTable中的CustTable.AccountNum字段属于CustAccount类型,它扩展了CustVendAc EDT。所以基本上,它们都是同一类型的

CustTable.CustGroup属于CustGroupId类型,因此可以

CustTable.Currency是CustCurrencyCode类型,它扩展了CurrencyCode

在插入之前,请使用现有方法验证记录 记录到数据库中

使用custTable.validateWrite方法验证是否可以创建记录。如果缺少一些必需的记录,它将返回false,并显示带有错误消息的infolog

它表示获取帐号、名称以及客户记录必需的所有字段。我该如何自己决定呢

表中的每个字段都具有必填属性

代码如下所示:

try
{
    custTable.initValue();

    custTable.AccountNum = dlgCust.value();
    custTable.CustGroup = dlgGrp.value();
    custTable.Currency = dlgCur.value();

    //Other mendatory fields like customer name

    if (custTable.validateWrite())
    {
       ttsBegin;
       custTable.insert();
       ttsCommit;
    }
    else
    {
       throw error("Please enter all required fields");
    }
}
catch
{
    error("An error occurred. Please try again");
}

CustVendAc是一个扩展的num。。在哪里,为什么,如何选择这个?我假设它将用户输入放入该字段并放入digCust,然后将其分配给AccountNum表CustTable中的另一个扩展数据类型。啊,我明白你的问题了。使用右侧的EDT,以便DialogField控件知道如何/使用AOT反射在窗体上显示什么。您不需要传递字符串控件、字段长度、帮助文本、标签等,只需传递一个EDT,它就会计算出细节,因此您不需要提供太多。如果使用基本枚举,它可能会提供一个下拉列表。或者,如果使用FileNameOpen,它将有一个选项来打开公共对话框控件。在\Classes\DialogField\init中查看进行反射的位置,并在\Classes\Dialog\addField中查看初始调用。ArbitraryCustVendAc是一个扩展的num。。在哪里,为什么,如何选择这个?我假设它将用户输入放入该字段并放入digCust,然后将其分配给AccountNum表CustTable中的另一个扩展数据类型。啊,我明白你的问题了。使用右侧的EDT,以便DialogField控件知道如何/使用AOT反射在窗体上显示什么。您不需要传递字符串控件、字段长度、帮助文本、标签等,只需传递一个EDT,它就会计算出细节,因此您不需要提供太多。如果使用基本枚举,它可能会提供一个下拉列表。或者,如果使用FileNameOpen,它将有一个选项来打开公共对话框控件。查找\Clas
ses\DialogField\init查看它在哪里进行一些反射,并\Classes\Dialog\addField查看初始调用。这是一个问得很好、写得很好的问题。不幸的是,在AX中,社区问题很少得到投票+这是一个问得很好、写得很好的问题。不幸的是,在AX中,社区问题很少得到投票+从我这里得到1。