Axapta 如何使用动态字符串插入表字段?

Axapta 如何使用动态字符串插入表字段?,axapta,dynamics-ax-2012,Axapta,Dynamics Ax 2012,我在AX 2012工作。 我尝试编写代码,计算每个月的所有销售额,并将其插入表中的字段中。 这些字段称为Sales1、Sales2、Sales3等。。。表示一年中的月份 是否有一种方法可以选择这些字段并在一段时间内插入它们,如下面的示例所示 while select myTable where myTable.date >= startDate && myTable.date <= endDate { MyTable.("Sales" +MthOfYear(

我在AX 2012工作。 我尝试编写代码,计算每个月的所有销售额,并将其插入表中的字段中。 这些字段称为Sales1、Sales2、Sales3等。。。表示一年中的月份

是否有一种方法可以选择这些字段并在一段时间内插入它们,如下面的示例所示

while select myTable where myTable.date >= startDate && myTable.date <= endDate
{
     MyTable.("Sales" +MthOfYear(MyTable.Date)) += MyTable.SalesQty;
}

myTable.insert();

当选择myTable where myTable.date>=startDate&&myTable.date时,我认为您的主要问题是如何通过将字段名称包含在字符串变量中来访问字段?
如果是这种情况,请查看以下两个链接:

简而言之:首先,您必须使用
fieldName2Id
将字段名转换为相应的字段ID。之后,您可以使用语法
myTable.(fieldId)
访问此字段

要为您的案例整合所有内容,请执行以下操作:

myTable.(fieldName2Id(myTable.TableId, strfmt("%1%2", "Sales", mthofyr(myTable.Date)))) += myTable.SalesQty
如果您有任何问题或疑问,请立即通过评论提问。

虽然可以节省您的时间,但将字段命名为
Sales1
Sales2
是一种AX反模式<代码>销售17
。为什么?因为AX支持表中的数组(尽管只有固定大小)

要使用它,请定义一个新的扩展数据类型
SalesAmountMonth
exending
SalesAmount
(或其他任何类型)。 给它贴上“一月”的标签。然后在节点“Array Elements”中为“二月”、“集市”添加一个新的数组元素,直到“十二月”。看

然后将扩展数据类型添加到表中

您的现场访问非常简单:

myTable.Sales[mthofyr(myTable.Date)] += myTable.SalesQty;
我更喜欢使用这样的日期索引功能,因为它具有更大的灵活性:

myTable.Sales[intvNo(myTable.date, startDate, IntvScale::YearMonth) + 1] += myTable.SalesQty;

通过更改枚举,您可以按月、周、季度或其支持的任何内容进行分组

这让我很高兴。请接受它作为答案。非常感谢。