セカンダリ テーブルから値を取得し、レコードごとの選択基準として使用する方法がわかりません。
Oracle 11g データベースへの ODBC 接続を介して、Windows 7 で Crystal Reports 2011 を使用しています。
次の 2 つの場所からの情報を利用する従業員名簿を作成しています。
- 表: 教師
- ビュー: PVSIS_CUSTOM_TEACHERS
教師のテーブルには、id、姓、名、電話番号、住所、都市、州、郵便番号などの予測可能なフィールドが設定されています。
ビューには、次のフィールドが使用可能です。
- TEACHERID
- フィールド名
- TEXT_VALUE
私が使用しているデータベース アプリケーションでは、メインの教師テーブルに関連する「カスタム フィールド」を作成できます。実際、私が作成しているフィールドは実際には別のテーブルに保存されていますが、PVSIS_CUSTOM_TEACHERS ビューからアクセスできます。データベース アプリケーションでは任意の数の「カスタム フィールド」を作成できるため、ビューには任意の数のレコードを含めることができ、教師テーブル内のレコードに結び付けることができます。
作成されたカスタム フィールドは多数ありますが、現在のプロジェクトの目的では、そのうちの 3 つだけが重要です。
- empDirSupRecord
- empDirSupPhone
- empDirSupAddr
私の個人的な教師の記録のビューは次のようになります。
TeacherID Field_Name Text_Value 1 empDirSupRecord 1 empDirSupPhone 1 1 empDirSupAddr 1 1 アナザーフィールド 1 まだ別のフィールド
(これは、自分の電話番号と住所を非表示にするように要求したことを示していますが、それでも自分の名前をディレクトリに含めたいと考えています)
ユーザーが電話番号または住所を公開しないように要求した場合、またはレコード全体を完全に非表示にする必要がある場合、これらのフィールドにはそれぞれ「1」が含まれます。
最初にレポートを開始したとき、テーブルとビューの両方をデータベース エキスパートに取り込み、teachers.id = pvsis_custom_teachers.teacherid でそれらをリンクしました。ただし、これにより、各教師の名前がビュー内の教師 ID を持つレコードごとに 1 回レポートに出力されます。これは私が望む動作ではないため、データベース エキスパートからビューを削除し、SQL 式フィールドを使用してカスタム フィールドの内容を取得しようとしました。これは私が現在立ち往生しているところです。レコードがレポートによって処理されているため、教師のレコードごとに、正しい名前のフィールドを選択する方法で sql を記述する必要があります。
現在、私のSQL式ステートメントは次のように書かれています:
(SELECT text_value FROM pvsis_custom_teachers WHERE field_name = 'empDirSupRecord' AND teacherid = '1')
私がしなければならないことは、レポートで teacherid = (現在処理中の teacherid が何であれ) のレコードをインテリジェントに選択する方法を理解することです。SQL 式フィールドがこれを達成するための方法であるかどうかはわかりません。そのため、現在のアプローチが機能しない場合は、別の提案を受け入れることは間違いありません。
ご覧いただきありがとうございます。:-)