查询两个字段中至少有一个属于日期范围(

问题描述 投票:2回答:2

我有一个在包含两个modifiedBy日期的视图上运行的查询。我需要返回其中任何一个日期落入指定范围的所有记录。

从我研究的所有内容来看,我似乎需要这样的东西:

    qbdsCustTableAddressView
        .addRange(fieldNum(TCMCustTableAddressView, CustTableModified))
        .value(
            strFmt("(%1>='%2' AND %1<='%3') || (%4>='%2' AND %4<='%3')",
                fieldstr(TCMCustTableAddressView, CustTableModified),
                DateTimeUtil::toStr(contract.parmFromDateTime()),
                DateTimeUtil::toStr(contract.parmToDateTime()),
                fieldstr(TCMCustTableAddressView, EBillModified),
                0
            )
        );

当我将得到的查询与生成的查询进行比较时:

qbdsCustTableAddressView
    .addRange(fieldNum(TCMCustTableAddressView, CustTableModified))
    .value(strFmt("%1..%2", contract.parmFromDateTime(), contract.parmtoDateTime()));

然后上面看起来正确我得到一个非特定的“22附近的语法错误”

axapta x++
2个回答
1
投票

你有一些括号,单引号和使用AND而不是&&的问题。

这应该工作:

qbdsCustTableAddressView
    .addRange(fieldNum(TCMCustTableAddressView, CustTableModified))
    .value(
        strFmt("(((%1 >= %2) && (%1 <= %3)) || ((%4 >= %2) && (%4 <= %3)))",
            fieldstr(TCMCustTableAddressView, CustTableModified),
            DateTimeUtil::toStr(contract.parmFromDateTime()),
            DateTimeUtil::toStr(contract.parmToDateTime()),
            fieldstr(TCMCustTableAddressView, EBillModified),
            0
        )
    );

0
投票

试试这个:

qbdsCustTableAddressView
    .addRange(fieldNum(TCMCustTableAddressView, CustTableModified))
    .value(SysQuery::range(contract.parmFromDateTime(), contract.parmtoDateTime()));

区别是SysQuery::range(<from>, <to>)

我没有看到明显的问题,但也许这可能会为你冲洗它。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.