none
リレーションシップで繋がっている子テーブルを検索表示させるには? RRS feed

  • 質問

  • http://www.atmarkit.co.jp/fdotnet/vblab/vsdbprog_07/vsdbprog_07_01.html

    このページを参考に、親子関係にあるテーブルを作りました。

    customer → 親テーブル

    memo → 子テーブル

    制約条件は、参考ページの図1と同じにしてあります。

    これに、親テーブルの検索機能を追加しました。その参考ページは、こちら

    この顧客マスター・メンテナンス画面の図にある(2)検索機能です。

     

    同じFormに、親テーブルと子テーブルを配置しているので、一端、子テーブルをClearしてから親テーブルを検索するようにしました。

        /// <summary>
        /// 検索ボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fillByNameToolStripButton_Click(object sender, EventArgs e)
        {
          // メモ(子テーブル)をクリア
            this.customerManagementDataSet.memo.Clear();
          // 親テーブルを検索
          this.customerTableAdapter.FillByName(this.customerManagementDataSet.customer, param1ToolStripTextBox.Text, param2ToolStripTextBox.Text, param3ToolStripTextBox.Text);
        }
    

    実行してみると、親テーブルは表示されましたが子テーブルは何も表示されません。

    親テーブルに連動して、子テーブルを表示させるにはどうしたら良いですか。

    2011年4月5日 1:00

回答

  • アプリケーションの動作をどのようにされたいのでしょうか? 親テーブルが表示された後、親テーブルのレコードを一つ選択すると、それにぶら下がっている子テーブルのレコードが表示されるという仕様ではないのでしょうか? 一般的にはこのような仕様になると思いますが、そうであれば親テーブルを検索した直後に子テーブルに何も表示されないのは正しいということになり、親テーブルのレコードを選択したタイミングでそれにぶら下がっている子テーブルをFillするコードを記述する必要があります。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク taokato 2011年4月5日 2:31
    2011年4月5日 1:20
    モデレータ

すべての返信

  • アプリケーションの動作をどのようにされたいのでしょうか? 親テーブルが表示された後、親テーブルのレコードを一つ選択すると、それにぶら下がっている子テーブルのレコードが表示されるという仕様ではないのでしょうか? 一般的にはこのような仕様になると思いますが、そうであれば親テーブルを検索した直後に子テーブルに何も表示されないのは正しいということになり、親テーブルのレコードを選択したタイミングでそれにぶら下がっている子テーブルをFillするコードを記述する必要があります。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク taokato 2011年4月5日 2:31
    2011年4月5日 1:20
    モデレータ
  • > 親テーブルが表示された後、親テーブルのレコードを一つ選択すると、それにぶら下がっている子テーブルのレコードが表示されるという仕様ではないのでしょうか?

    はい。その通りです。

    >親テーブルのレコードを選択したタイミングでそれにぶら下がっている子テーブルをFillするコードを記述する必要があります。

    有難う御座いました。

    下記のコードを挿入したら出来ました。

    this.memoTableAdapter.FillByCustomerId(this.customerManagementDataSet.memo, customer_id);

    2011年4月5日 2:31