QueryDef オブジェクト

QueryDef オブジェクトでクエリーのパラメータを定義します。クエリーはデータベースからの特定のレコードの取得に使用されます。

QueryDef オブジェクトには、クエリー式と表示フィールドのリストが含まれます。クエリー式で、クエリーの検索パラメータを定義し、複雑な条件ステートメントのセットを含むことができます。クエリーを実行するには、ResultSet オブジェクトを作成して、その Execute メソッドを呼び出す必要があります。(Session オブジェクトの BuildResultSet メソッドを使用して、ResultSet オブジェクトを作成できます。) ResultSet オブジェクトは、QueryDef オブジェクト内の表示フィールドのリストを使用して検索結果を要約します。

QueryDef オブジェクトを作成するには、次の手順で行ないます。

  1. Session オブジェクトの BuildQuery メソッドを呼び出します。BuildQuery メソッドによって、表示フィールドとフィルタが定義されていない QueryDef オブジェクトが戻されます。
  2. クエリーのためのフィルタとフィールドを QueryDef オブジェクトに追加します。

データベース内のすべてのレコードを戻すクエリーを作成するには、QueryDef オブジェクトの BuildField メソッドを呼び出す クエリーの 1 フィールドごとに単純な QueryDef オブジェクトを作成します。

QueryDef オブジェクトにフィルタとノードを追加して、さらに複雑なクエリーを作成できます。QueryDef オブジェクトのノードは、1 つ以上の QueryFilterNode オブジェクトから構成され、それぞれに 1 つ以上のフィルタが含まれています。ノード グループには、その各フィルタが 1 つのブール演算子でまとめられています。このツリーのルート ノードを作成するには、QueryDef オブジェクトの BuildFilterOperator メソッドを使用します。その後、QueryFilterNode のメソッドを使用して、残りのノードとフィルタを定義します。フィルタ自体で他の比較演算子を使用して、指定したデータに対するフィールドの関係をテストできます。

例えば、次のステートメントのようにします。

Select * from <some defect> where (....) AND1 ((...) OR2 ( (...) AND3( (...) OR4 (...))))

ルート演算子は AND (AND1) です。次レベルのサブノード演算子は OR (OR2) です。完全な階層は、次のとおりです。

   AND1 (AND1 is the root operator)
   \
      OR2 (OR2 is suboperator of AND1)
       \
         AND3 (AND3 is suboperator of OR2)
         \
            OR4 (OR4 is suboperator of AND3) 
注: また、Session オブジェクトの BuildSQLQuery メソッドを使用して、未加工の SQL クエリー文字列からクエリーを構成することもできます。しかし、この手法では QueryDef オブジェクトは作成できません。

フィードバック