【问题标题】:How to filter in execute query by Date range value?如何按日期范围值过滤执行查询?
【发布时间】:2015-12-01 12:47:37
【问题描述】:

我必须在executeQuery 中进行一个查询,并且我必须按日期字段进行过滤, 我的代码是:

public void executeQuery()
{
    utcDateTime dateUTC, datenullUTC;
    query q = new Query();

    QueryBuildRange qbr;
    QueryBuildDataSource qbds ;
    QueryRun queryRun;

    dateUTC = DateTimeUtil::newDateTime(_dateValue, 0, DateTimeUtil::getCompanyTimeZone());

    qbds = q.addDataSource(tableNum(MCRCustCategory) ); 

    qbds.addRange(fieldNum(MCRCustCategory, ValidTo)).value(strFmt ("> %1", dateUTC) );

    queryRun = new QueryRun (q);

    super();
}

在我的init 中,我调用了 executeQuery,但不要在我的表单中进行过滤。

如何使用 Range 中的日期?

谢谢大家,

享受吧!

【问题讨论】:

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


    【解决方案1】:

    您使用了一个使用date effective 的表。你假设你必须自己做选择,这是不正确的。

    改用这个:

    public void executeQuery()
    {
        this.queryBuildDataSource().validTimeStateAsOfDate(_dateValue);
        super();
    }
    

    如果您有间隔,请改用它:

    this.queryBuildDataSource().validTimeStateDateRange(fromDate, toDate)
    

    您在问题中提供的代码根本没有做任何事情,因为表单不使用您构建的查询。无论如何,您构建了错误的查询!

    这个blog post 简洁地解释了它。

    【讨论】:

    • this.queryBuildDataSource().validateNameCharacters();我只有写成executeQuery方法形式才有这个方法。
    • 您在所有数据源方法中都有它。否则通过其他方式定位查询。
    • validateNameCharacters 和什么有什么关系?
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多