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

How to filter by date and do a Form's query by code?

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

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();
}

在我的数据源中,我构建了一个查询。我的数据源中的 table 与 VendTable 相关。我按 DataSource 按 myVendTableCaller.RecId 和变量 date dateByDialog 插入的代码过滤对话框

我的查询是这样的:

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();
}

*有关信息,有一个 Table 关系 CustomVendTable.Vendor == VendTable.RecId

所以,我有一些问题!我认为无法按日期做出正确的 query。字段 ValidFrom - ValidToUTCdatetime 类型。

1) 我必须在 UTC 中转换我的 _dateByDialog 吗?怎么做 ?我的查询日期方式正确吗?

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

我了解到您应该设置 会话日期时间 (I'm talking about this ) 以控制日期。

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

你知道我该怎么做吗?

也许你用了一个 table,它用了 date effective。你假设你必须自己做选择,这是不正确的。

改为在数据源上调用方法 validTimeStateAsOfDate。有关详细信息,请参阅

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

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