0

我必须通过代码进行表单查询。数据源表是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 和在打开对话框中插入的可变日期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 吗?怎么做 ?我的查询日期正确吗?

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

我读过你应该设置会话日期时间我说的是这个)来控制日期。

我仍然相信我没有很好地构建我的查询

你知道我该怎么做吗?

4

2 回答 2

0

也许您使用了一个使用有效日期的表格。你假设你必须自己做选择,这是不正确的。

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

于 2016-02-08T11:30:30.953 回答
0

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

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

于 2016-02-17T07:17:10.300 回答