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

Posted

技术标签:

【中文标题】如何按日期过滤并按代码进行表单查询?【英文标题】:How to filter by date and do a Form's query by code? 【发布时间】:2016-02-06 22:13:09 【问题描述】:

我必须通过代码进行表单查询。数据源表是CustomVendTable(是自定义表)。 我打开一个 form 并在我的 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 的代码过滤我的 DataSource 和在打开 dialog

中插入的变量 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();

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

所以,我有一些问题!我认为无法按日期进行正确的查询ValidFrom - ValidTo 字段为 UTCdatetime 类型。

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

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

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

我仍然认为我的 Query 构建得不是很好。

你知道我该怎么做吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

改为在数据源上调用方法validTimeStateAsOfDate。详情请见this answer。

【讨论】:

另外,不要从头开始构建查询。通过init 方法更改查询构建。

以上是关于如何按日期过滤并按代码进行表单查询?的主要内容,如果未能解决你的问题,请参考以下文章

具有特定条件计数的 Mongodb 聚合并按输出投影的日期范围过滤不能按预期工作

从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为 Datetime

从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为 Datetime

php 按大多数查看的产品集合排序并按新日期过滤

按日期字段过滤子表单

每次登录表时,我如何进行 mysql 查询以查找用户,以及与他一起的所有其他用户,按日期和时间过滤