Dynamics AX 2009 X ++选择日期范围 [英] Dynamics AX 2009 X++ Selecting A Date Range

查看:161
本文介绍了Dynamics AX 2009 X ++选择日期范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建X ++报表,要求用户可以在表单上进行多选,并且当他们单击报表菜单按钮时,将根据选择拉入值.

I am creating an X++ report, and the requirement is that the user can multi-select on a form and when they click the report menu button the values are pulled in based on the selection.

到目前为止,这很容易,我可以输入Str范围,即订单号,商品ID等,但是我希望能够根据选择来获取日期范围.

So far this is easy enough, and I can pull in Str ranges i.e. order numbers, item id's etc, but I want to be able to pull in a date range based on selection.

我使用了几种MorphX报表使用的方法,并在X ++报表中使用了3种关键方法;

I have used a method which several MorphX reports use, with use of 3 key methods in X++ reporting;

setQuerySortOrder setQueryEnableDS

setQuerySortOrder setQueryEnableDS

和主键之一;

setQueryRange

setQueryRange

setQuery Range的代码如下;

The code for setQuery Range is as follows;

private void setQueryRange(Common _common)
{
    FormDataSource              fds;

    LogisticsControlTable       logisticsTable;
    QueryBuildDataSource        qbdsLogisticsTable;

    QueryBuildRange             qbrVanRun;
    str                         rangeVanRun;

    QueryBuildRange             qbrLogId;
    str                         rangeLogId;

    QueryBuildRange             qbrExpStartDate;
    str                         rangeExpStartDate;

    set                         vanRunSet       = new Set(Types::String);
    set                         logIdSet        = new Set(Types::String);
    set                         expStartDate    = new Set(Types::Date);

    str addRange(str _range, str _value, QueryBuildDataSource _qbds, int _fieldNum, Set _set = null)
    {
    str             ret = _range;
    QueryBuildRange qbr;
    ;

    if(_set && _set.in(_Value))
    {
        return ret;
    }

    if(strLen(ret) + strLen(_value) + 1 > 255)
    {
        qbr = _qbds.addRange(_fieldNum);
        qbr.value(ret);
        ret = '';
    }

    if(ret)
    {
        ret += ',';
    }

    if(_set)
    {
        _set.add(_value);
    }

    ret += _value;
    return ret;
}

switch(_common.TableId)
{
    case tableNum(LogisticsControlTable):

    qbdsLogisticsTable  = element.query().dataSourceTable(tableNum(LogisticsControlTable));
    qbrVanRun           = qbdsLogisticsTable.addRange(fieldNum(LogisticsControlTable, APMServiceCenterID));

    qbdsLogisticsTable  = element.query().dataSourceTable(tableNum(LogisticsControlTable));
    qbrLogId            = qbdsLogisticsTable.addRange(fieldNum(LogisticsControlTable, LogisticsId));

//       qbdsLogisticsTable  = element.query().dataSourceTable(tableNum(LogisticsControlTable));
//        qbrExpStartDate     = qbdsLogisticsTable.addRange(fieldNum(LogisticsControlTable, APMExpDateJobStart));

    fds = _common.dataSource();

    for(logisticsTable = fds.getFirst(true) ? fds.getFirst(true) : _common;
        logisticsTable;
        logisticsTable = fds.getNext())
    {
        rangeVanRun         = addrange(rangeVanRun, logisticsTable.APMServiceCenterID, qbdsLogisticsTable, fieldNum(LogisticsControlTable, APMServiceCenterID), vanRunSet);
        rangeLogID          = addrange(rangeLogID, logisticsTable.LogisticsId, qbdsLogisticsTable, fieldNum(LogisticsControlTable, LogisticsId), logIdSet);
//           rangeExpStartDate   = addrange(rangeExpStartdate,       logisticsTable.APMExpDateJobStart, qbdsLogisticsTable, fieldNum(LogisticsControlTable, APMExpDateJobStart), expStartDate);
    }



qbrLogId.value(rangeLogID);
    qbrVanRun.value(rangeVanRun);
    break;
}
}

推荐答案

使用queryValue为查询正确设置日期格式:

Use queryValue to format your dates correctly for the query:

set expStartDate = new Set(Types::String);

rangeExpStartDate = addrange(rangeExpStartdate, queryValue(logisticsTable.APMExpDateJobStart), qbdsLogisticsTable, fieldNum(LogisticsControlTable, APMExpDateJobStart), expStartDate);

这篇关于Dynamics AX 2009 X ++选择日期范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆