InventTable フォームを変更して、ユーザーがデフォルトの注文設定セットアップ フォームで「停止」ステータスに応じてアイテムをフィルター処理できるようにしました。2 つのチェックボックスの値に応じて、「購入可能な」アイテム、「販売可能な」アイテム、すべてのアイテム、または販売または購入がブロックされているアイテムのリストを取得します。
InventItemSalesSetup および InventItemPurchSetup データソースをコードに追加し、ユーザーがチェックボックスをオンまたはオフにしたときにそれらを有効または無効にします。
データソースの 1 つが無効になっている場合を除いて、すべて正常に動作します。その後、「高度なフィルター/並べ替え」オプションが機能しなくなります。「データ ソースが有効になっていません」というエラーが表示されます。
エラーは、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 を追加して問題を解決しましたが、このエラーを発生させずにデータ ソースを有効/無効にする方法があるのだろうかと思います。
私は自分自身をよく説明したことを願っています、ありがとう!