none
フォーム毎のDataSetのインスタンスについて RRS feed

  • 質問

  • 最近、会社で伝票管理をするプログラムを作成しようと悪戦苦闘中です。

    作っては消し、作っては消し、さっぱり進みません。

    早速ですが、ひとつ質問させてください。顧客マスターと伝票のデータを表示、編集するためにSQLサーバーのテーブルをプロジェクトに新しいデータソースとして追加しました。

    各フィールドをフォームにドラック&ドロップすると大体の表示部分は出来上がりますが、このときフォームにDataSetが作成されます。マスターと伝票はそれぞれ別のフォームで編集したいので、新しいフォームを作り再度、データソースからドラッグ&ドロップで編集フォームを作成しました。このときそれぞれのフォームに同名のDataSetが作成されますが、どうもインスタンスとしては別物のようです(あってます?)

    そこで質問です

    テーブルは表示部分と編集部分で1つなので、データセットも1つだけメインの表示フォームに作成し、他のフォームと共有したほうがわかりやすいような気がしますが、通常どのように扱われているのでしょうか? やはり各フォームにそれぞれDataSetがあって変更がある度に全てを更新し直すのでしょうか?

    以前Delphiをすこし使っていたことがあるのですが、こちらはひとつのデータセットを全てのフォームが共有するような形だったと思います。

    何が言いたいのかよくわからないような質問になってしまいましたが、ご意見をお聞かせいただければ幸いです。宜しくお願いいたします。

    2007年2月27日 6:07

回答

  •  ktm03 さんからの引用

    このときそれぞれのフォームに同名のDataSetが作成されますが、どうもインスタンスとしては別物のようです(あってます?)

    あってます。

     ktm03 さんからの引用

    テーブルは表示部分と編集部分で1つなので、データセットも1つだけメインの表示フォームに作成し、他のフォームと共有したほうがわかりやすいような気がしますが、通常どのように扱われているのでしょうか? やはり各フォームにそれぞれDataSetがあって変更がある度に全てを更新し直すのでしょうか?

    表示、更新の対象になっているのはあくまでデータテーブルであって、データセットでありません。マスターを表示するフォームにはマスターテーブル、詳細を表示するフォームには詳細テーブルであって、データセットは必須ではありません。
    ただ、TableAdapterやDataAdapterを使用するのが通常であり、データセットと組み合わせれば便利に使えますので、通常は、データテーブルとデータセットはセットで使います。

    今回の場合は、各フォームにデータセットやデータテーブルの一つのインスタンスを共有する必要が特に無いように思いますので、各フォームにそれぞれ別のデータセットやデータテーブルのインスタンスを持った方がわかりやすいと思います。

    2007年2月27日 6:25
    モデレータ

すべての返信

  •  ktm03 さんからの引用

    このときそれぞれのフォームに同名のDataSetが作成されますが、どうもインスタンスとしては別物のようです(あってます?)

    あってます。

     ktm03 さんからの引用

    テーブルは表示部分と編集部分で1つなので、データセットも1つだけメインの表示フォームに作成し、他のフォームと共有したほうがわかりやすいような気がしますが、通常どのように扱われているのでしょうか? やはり各フォームにそれぞれDataSetがあって変更がある度に全てを更新し直すのでしょうか?

    表示、更新の対象になっているのはあくまでデータテーブルであって、データセットでありません。マスターを表示するフォームにはマスターテーブル、詳細を表示するフォームには詳細テーブルであって、データセットは必須ではありません。
    ただ、TableAdapterやDataAdapterを使用するのが通常であり、データセットと組み合わせれば便利に使えますので、通常は、データテーブルとデータセットはセットで使います。

    今回の場合は、各フォームにデータセットやデータテーブルの一つのインスタンスを共有する必要が特に無いように思いますので、各フォームにそれぞれ別のデータセットやデータテーブルのインスタンスを持った方がわかりやすいと思います。

    2007年2月27日 6:25
    モデレータ
  • 早速のご回答ありがとうございます。

    現状ご指摘の通り各フォーム毎にデータセット、データテーブルのインスタンスを持っているのですが、生来貧乏性のためよく似た内容のデータテーブルのインスタンスがたくさん出来るとだんだんメモリーがもったいなくなってきて、皆さんどうされているのかと心配になってしまいました。

    アドバイスいただいた方法が通常との事ですのでその方向で進んでいきたいとおもいます。

    ありがとうございました。

    2007年2月27日 8:08