1

下の図に示すようなマスター/詳細関係があります

ここに画像の説明を入力

OrderHeaders テーブルに表示されるデータをフィルタリングする必要があるため、 (画面の [クエリの編集] リンクをクリックして)ローカル クエリを編集しましたが、フィルターの一部は計算済みプロパティに基づいているため、 PreprocessQueryメソッドを使用する必要があります。計算されたプロパティは、クエリの「フィルター」セクションには表示されません。

しかし、今私は問題を抱えています。ローカルクエリでは、下の図に示すように、グローバルクエリのように「コードを書く」コンボボックスは利用できません

ここに画像の説明を入力

そのため、ローカル クエリで PreprocessQuery メソッドを作成する方法がわかりません。

だれか作り方教えてくれませんか?

ローカル クエリで使用できない場合、計算済みプロパティでフィルター処理する別の方法はありますか?

4

1 に答える 1

2

まず、テーブルからサブクエリを作成します。ProductsWithouDescriptionテーブルをSortedProducts右クリックして「クエリを追加」するなど。(国は「ヘッダー」テーブルに相当するはずです)

ここに画像の説明を入力

クエリに名前を付けてから、必要なタイプのパラメータをクエリに追加します。

ここに画像の説明を入力

次に、そのためのコードをいくつか書きます: (ここで国は私が使用しているテーブルです)

ここに画像の説明を入力

ここに画像の説明を入力

NewParameter がメソッドの「パラメータ」になっていることに注意してください。これにより、このクエリがフィルター処理CountryNameされ、パラメーターと等しいレコードのみが表示されます。パラメータは必要な数だけ持つことができます。

そのデータ項目を画面に追加します。

ここに画像の説明を入力

次に、必要なタイプの新しいプロパティも追加します ([データ項目の追加] の下にもあります)。

Is requiredのチェックを外すことをお勧めします。

ここに画像の説明を入力

これが私の画面の基本的なクエリレイアウトです。データ モデルにはすべての場所に国があるため、テーブルLocations to を例として使用しました。Locations は、Customer テーブルに相当するものと想定されています。場所(顧客) テーブルを展開すると、新しく作成したクエリを直接追加できないことがわかります。また、Created プロパティが表示されていることにも注意してください。

ここに画像の説明を入力

左側の新しいクエリを展開すると、下部にパラメーターが表示されます。

ここに画像の説明を入力

それをクリックし、そのプロパティを取得して (F4)、パラメータを新しく作成されたプロパティにマップします。

ここに画像の説明を入力

これで、作成したばかりのプロパティによってフィルタリング パラメーターが設定されます。

クエリが何かを表示する前に、プロパティを設定する必要があります。方法は次のとおりです。

Customer (Mine is locations) テーブルを選択し、左上にある下矢印をクリックしてコードを記述し、`SelectionChanged' メソッドを選択します。

ここに画像の説明を入力

次に、いくつかのコードを記述します。

ここに画像の説明を入力

ここで私の表示文字列は、場所の計算フィールドです。そのため、場所グリッドで何かを選択するたびに、その「DisplayString」を使用して「MynewFavoriteQuery」をフィルタリングします。

注意すべき点:

サブクエリのパラメーターをOptionalにすると、プロパティがNULLである限り、クエリはフィルタリングなしですべてを表示します。(実際には、少し違った使い方をしているので、これについてはよくわかりませんが、いじってみて、何が得られるかを確認してください)

ここに画像の説明を入力

プロパティをRequiredに設定すると、プロパティが null に設定されていると、画面で検証エラーが発生します。

画面の作成時にプロパティが常に null に初期化されるため、これを微調整する必要がある場合もあります。画面が最初に生成されたときに、書き込みコードの一般的な「ScreeCreated」メソッドを編集して、そのプロパティに値を設定できます。

ご不明な点がございましたら、お知らせください。

于 2013-09-05T14:31:00.047 に答える