如何按日期过滤并按代码执行表单查询?

时间:2016-02-06 22:13:09

标签: datetime axapta dynamics-ax-2012 x++ executequery

我必须按代码进行表单查询。数据源表是 CustomVendTable (是一个自定义表)。 我打开一个表单,在我的init方法中,我得到了表调用者:

public void init ()
{
  VendTable = myVendTableCaller;
  myVendTableCaller = element.args().record();
// There is a dialog and get a date by a _Dialog_ and save in a date variable
  super();
}

在我的数据源中,我构建了一个查询。我的数据源中的表与VendTable相关。我通过myVendTableCaller.RecId和变量 date dateByDialog 插入开头对话框 DataSource 进行过滤>

我的疑问是:

public void executeQuery()
{
query q = new Query();
QueryBuildRange qbr;
QueryBuildDataSource qbds ;
QueryRun queryRun;

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

qbds.addRange(fieldNum(CustomVendTable, ValidFrom)).value(SysQuery::value( strFmt ("<=%1 ", _dateByDialog)) ) ;
qbds.addRange(fieldNum(CustomVendTable, ValidTo)).value(SysQuery::value( strFmt (">=%1 ", _dateByDialog))) ;
qbds.addRange(fieldNum(CustomVendTable, Vendor )).value(SysQuery::value(myVendTableCaller.recId));

queryRun = new QueryRun (q);

CustomVendTable_ds.query(queryRun.query());

super();
}

*有关信息,有表关系 CustomVendTable.Vendor == VendTable.RecId

所以,我有一些问题!我认为不能按日期做出正确的查询。字段 ValidFrom - ValidTo UTCdatetime 类型。

1)我必须在UTC中转换我的_dateByDialog?怎么做 ?它&#39;更正我的查询日期方式?

考虑到转换不是不可能的,我的BIG问题是通过按日期过滤,如果我只有一个记录具有recid相同的范围和日期我可以以某种方式看到它,但是如果有更多记录具有这些相同的特征(如果我有2个记录)我什么也看不见!我的表单网格无效!

我已经读过你应该设置会话日期时间I'm talking about this)来控制日期。

我仍然认为我没有很好地构建查询

你知道我该怎么办?

2 个答案:

答案 0 :(得分:0)

也许您使用的是使用date effective的表格。你假设你必须自己做选择,这不是真的。

而是在数据源上调用方法validTimeStateAsOfDate。有关详细信息,请参阅this answer

答案 1 :(得分:0)

如果您使用DateTimeUtil :: newDateTime并为日期创建了新的UTCDateTime参数?

https://community.dynamics.com/ax/b/alirazatechblog/archive/2012/09/03/date-to-utcdatetime-convertion-dynamics-ax-2012