如何按日期过滤并按代码进行表单查询?
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 - ValidTo 是 UTCdatetime 类型。
1) 我必须在 UTC 中转换我的 _dateByDialog 吗?怎么做 ?我的查询日期方式正确吗?
考虑到转换并非不可能,我的大问题是通过按日期过滤,如果我只有一个具有相同范围和日期的记录,我可以以某种方式看到它,但是如果有更多具有相同范围和日期的记录特征(如果我有 2 条记录)我什么都看不到!我的表单网格无效!
我了解到您应该设置 会话日期时间 (I'm talking about this ) 以控制日期。
我仍然相信我没有很好地构建我的 查询。
你知道我该怎么做吗?
也许你用了一个 table,它用了 date effective。你假设你必须自己做选择,这是不正确的。
改为在数据源上调用方法 validTimeStateAsOfDate
。有关详细信息,请参阅 。
如果您使用 DateTimeUtil::newDateTime 并为日期创建了新的 UTCDateTime 参数?
我必须通过代码进行表单查询。数据源 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 - ValidTo 是 UTCdatetime 类型。
1) 我必须在 UTC 中转换我的 _dateByDialog 吗?怎么做 ?我的查询日期方式正确吗?
考虑到转换并非不可能,我的大问题是通过按日期过滤,如果我只有一个具有相同范围和日期的记录,我可以以某种方式看到它,但是如果有更多具有相同范围和日期的记录特征(如果我有 2 条记录)我什么都看不到!我的表单网格无效!
我了解到您应该设置 会话日期时间 (I'm talking about this ) 以控制日期。
我仍然相信我没有很好地构建我的 查询。
你知道我该怎么做吗?
也许你用了一个 table,它用了 date effective。你假设你必须自己做选择,这是不正确的。
改为在数据源上调用方法 validTimeStateAsOfDate
。有关详细信息,请参阅
如果您使用 DateTimeUtil::newDateTime 并为日期创建了新的 UTCDateTime 参数?