Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
大于Axapta 2009 X+中的日期+;_Axapta_X++_Dynamics Ax 2009 - Fatal编程技术网

大于Axapta 2009 X+中的日期+;

大于Axapta 2009 X+中的日期+;,axapta,x++,dynamics-ax-2009,Axapta,X++,Dynamics Ax 2009,我想写一个查询,它将选择X++中大于某个日期的所有销售订单。这将是我正在写的工作的一部分 大概是这样的: SalesTable.createdDateTime > '2016-09-01' 我相信我需要使用DateTimeUtil::newDateTime来完成它。我见过这样的例子: where salesLine.createdDateTime == DateTimeUtil::newDateTime(systemdateget(), 0) 我怎么才能把实际日期写进去?或者我应该使用

我想写一个查询,它将选择X++中大于某个日期的所有销售订单。这将是我正在写的工作的一部分

大概是这样的:

SalesTable.createdDateTime > '2016-09-01'
我相信我需要使用
DateTimeUtil::newDateTime
来完成它。我见过这样的例子:

where salesLine.createdDateTime == DateTimeUtil::newDateTime(systemdateget(), 0)
我怎么才能把实际日期写进去?或者我应该使用不同的方法<代码>查询生成器也许

非常感谢,

Anna

根据您的评论(但我如何在代码中使用该实际日期?)要在查询中使用该日期,您可以使用此代码:

Query                q;
QueryRun             qr;
QueryBuildDataSource qbd;
QueryBuildRange      qbr;
utcDateTime          mutcDateTime;
date                 mDate;

;

mDate        = str2Date("15/09/2016", 123); //15h September   
mutcDateTime = DateTimeUtil::newDateTime(mDate,0);

q   = new Query();
qbd = q.addDataSource(TableNum(SalesTable));
qbr = qbd.addRange(FieldNum(SalesTable, CreatedDateTime));
qbr.value(strFmt('>%1', mutcDateTime));
qr  = new QueryRun(q);    
要按代码运行此查询并获取
SalesTable

while(qr.next()){
    salesTable = qr.get(tablenum(SalesTable));
}        

使用AX的查询语法或使用查询对象都取决于您的使用。做一个日期/时间对两者都有用

下面是一个示例作业,它显示了一种更正确的方法来做您想要做的事情,并且还显示了时区注意事项

您可以构建一个
date
对象或
utcDateTime
,这更可能是您需要做的事情

static void DateTimeExample(Args _args)
{
    utcDateTime         myDateTime;
    date                myDate;
    TimeOfDay           myTimeOfDay;

    // Set your date
    myDate          = mkDate(1,10, year(today())); // Ex. October 1, 2016

    // Set time of day or just use 0
    myTimeOfDay     = DateTimeUtil::time(DateTimeUtil::utcNow());

    // Build your utcObject
    myDateTime  = DateTimeUtil::newDateTime(myDate, myTimeOfDay);

    // Apply timezone offset
    myDateTime  = DateTimeUtil::applyTimeZoneOffset(myDateTime, DateTimeUtil::getCompanyTimeZone());

    info(strFmt("utcDateTime: %1", myDateTime));
}

嗨,Anna,要获取实际日期,您可以使用
DateTimeUtil::getSystemDateTime()
DateTimeUtil::utcNow()
方法或
today()
方法,如果您只想约会。谢谢Jonathan,但是我如何在代码中使用实际日期?我已经看到了很多例子,其中有今天的日期-30(对于过去一个月的销售订单),但我想做的是选择9月15日之后的所有记录(并且不会根据今天的日期更改日期)。请尝试使用mkdate(),感谢Pradeep、Alex和Jonathan的评论。我肯定有很多东西要学!最后一个新问题,我可以在while循环中更新那些选定的记录吗?当然可以。前
qr=新查询运行(q)添加此行
qbd.update(true)和内部,而在开始时循环
ttsBegin在最后
ttsCommit
当然您需要
SalesTable.update()
如果您愿意,可以将此答案标记为正确:)谢谢Jonathan,我感谢您的帮助!嗨,乔纳森,我把ttsBegin和ttsCommit放在哪里?我将它们都放在循环中,但是当我运行代码时,我得到了这个错误:无法编辑销售订单(SalesTable)中的记录。无法完成该操作,因为未选择该记录进行更新。记住TTSBEGIN/TTSCOMMIT以及FORUPDATE子句。