从方法返回EDT数组并检索它,AX 2012

时间:2012-10-24 14:30:51

标签: arrays axapta x++ dynamics-ax-2012

我已经摆弄了这个问题一段时间,似乎无法找到解决方案。我正在研究另一个人最初编写的代码,我的工作是让它工作,因为他没有完成它的可能性。

我创建了一个名为MpasMthSalesIndex的EDT,其数组元素包含所有月份,1月 - 12月。

我从表单调用下面的方法(位于MpasItemSales数据源中)以获取返回的数组,如下所示:

[MpasMthSalesIndex] = MpasItemSales.MthSales(Year(today())-2);

给我错误:“操作数类型与运算符不兼容”

它不起作用。这是原始代码的原因,我已经尝试了所有我能想到的东西来恢复这个数组。谁知道我怎么做到这一点?

这是我打电话的方法:

我所做的是初始化MpasMthSalesIndex Ret,并用值填充它并尝试返回它,这里没有错误,但是当我尝试从我需要它的表单中将它分配给MpasMthSalesIndex时出现错误... < / p>

MpasMthSalesIndex MthSales(Yr _yr)
{
    int     i;
    int     m;
    date    d = SystemDateGet();
    date    e;
    Qty                 YrSales[366];
    MpasMthSalesIndex   ret;
    ;

    switch(_yr)
    {
        case(Year(d))                         :     [YrSales] = this.MpasSalesCurYr;
                                                    d = dateStartYr(d);
                                                    break;
        case(Year(PrevYr(d)))                 :     [YrSales] = this.MpasSalesPrevYr;
                                                    d = dateStartYr(PrevYr(d));
                                                    break;
        case(Year(PrevYr(PrevYr(d))))         :     [YrSales] = this.MpasSalesPrev2Yr;
                                                    d = dateStartYr(PrevYr(PrevYr(d)));
                                                    break;
        case(Year(PrevYr(PrevYr(PrevYr(d))))) :     [YrSales] = this.MpasSalesPrev3Yr;
                                                    d = dateStartYr(PrevYr(PrevYr(PrevYr(d))));
                                                    break;
    }

    e = dateEndYr(d);
    while (d<e)
    {
        i = DayOfYr(d);
        m = MthOfYr(d);
        ret[m] += YrSales[i];
        d++;
    }

    return ret;
}

1 个答案:

答案 0 :(得分:2)

电话

[MpasMthSalesIndex] = MpasItemSales.MthSales(Year(today())-2);

期望一个容器作为返回值,如:

int a, b, c;
[a, b, c] = [1, 2, 3]

尝试编辑方法以返回容器:

return [ret];