我必须按代码进行表单查询。数据源表是 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和变量 date 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?怎么做 ?它&#39;更正我的查询日期方式?
考虑到转换不是不可能的,我的BIG问题是通过按日期过滤,如果我只有一个记录具有recid相同的范围和日期我可以以某种方式看到它,但是如果有更多记录具有这些相同的特征(如果我有2个记录)我什么也看不见!我的表单网格无效!
我已经读过你应该设置会话日期时间(I'm talking about this)来控制日期。
我仍然认为我没有很好地构建查询。
你知道我该怎么办?
答案 0 :(得分:0)
也许您使用的是使用date effective的表格。你假设你必须自己做选择,这不是真的。
而是在数据源上调用方法validTimeStateAsOfDate
。有关详细信息,请参阅this answer。
答案 1 :(得分:0)
如果您使用DateTimeUtil :: newDateTime并为日期创建了新的UTCDateTime参数?