我必须通过代码进行表单查询。数据源表是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记录)我什么也没看到!我的表格网格是无效的!
我读过你应该设置会话日期时间(我说的是这个)来控制日期。
我仍然相信我没有很好地构建我的查询。
你知道我该怎么做吗?