【问题标题】:Returning EDT arrays from method and retrieving it, AX 2012从方法返回 EDT 数组并检索它,AX 2012
【发布时间】:2012-10-25 21:41:58
【问题描述】:

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

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

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

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

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

它不起作用。这就是原始代码,我已经尝试了我能想到的一切来返回这个数组。有人知道我该怎么做吗?

这是我调用的方法:

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

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;
}

【问题讨论】:

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


    【解决方案1】:

    电话

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

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

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

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

    return [ret];
    

    【讨论】:

    • 那行不通。但是,如果是这样 MpasMthSalesIndex[0] = MpasItemSales.MthSales(Year(today())-2);它不会给出任何错误,但在该方法中,我为每个月/数组元素赋值,我需要所有这些。但我想如果它是一个带有数组元素的 EDT,如果你只是它的类型的一个实例,它会返回整个数组。我就是无法让这么简单的事情工作
    • 然后返回一个容器,return [ret] 并恢复为[MpasMthSalesIndex] = MpasItemSales.MthSales(Year(today())-2);
    • 它似乎可以通过一个小的工作来解决这个问题。非常感谢,简! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多