我已经修改了 InventTable 表单,因此用户可以根据默认订单设置设置表单上的“已停止”状态过滤项目。他们根据两个复选框的值获得“可购买”物品、“可出售”物品、所有物品或被阻止出售或购买的物品的列表。
我在代码中添加了 InventItemSalesSetup 和 InventItemPurchSetup 数据源,并在用户选中或取消选中复选框时启用或禁用它们。
除非禁用其中一个数据源,否则一切正常。然后“高级过滤器/排序”选项停止工作。我收到错误消息:“未启用数据源”。
错误来自 SysQueryForm 表单的方法“saveCueEnabled”。当它调用时:
if (!CueRun::canSaveQueryAsCue(this.args().caller()))
return false;
哪个电话:
static boolean canSaveQueryAsCue(QueryRun qr)
{
int numOfDataSources, i;
QueryBuildDataSource ds;
Query q;
Common cursor;
;
if (!qr)
return false;
q = qr.query();
if (!q)
return false;
numOfDataSources = q.dataSourceCount();
for(i = 1; i <= numOfDataSources; i++)
{
ds = q.dataSourceNo(i);
if(ds.dynalinkCount() > 0)
return false;
// Check if it is temp
cursor = qr.getNo(i);
if (cursor.dataSource() && cursor.isTmp())
return false;
}
return true;
}
当它获取查询中的数据源数量时,“dataSourceCount”方法还返回禁用数据源的计数,当它在循环中获取禁用数据源的 QueryBuildDataSource 时,您会得到一个空 DS 并且它崩溃时它检查它是否是一个临时表。
我已经解决了在“saveCueEnabled”代码上添加额外 if 的问题,但我想知道是否有一种方法可以启用/禁用数据源而不会出现此错误。
我希望我已经很好地解释了自己,谢谢!