- - PR -
1つの DataSet を3つのテーブルで使えますか
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-11 11:09
年度列を追加に不都合はありません。ただ同様な意味を持つ年月日もと考えただけです。将来のこともあり 新規フィールド名を「過去年数」とし、本年度をゼロ、前年度を1と考えています。
了解しました。その上、将来マルチユーザー対応となれ厄介になりそうなのでおっしゃる通りにいたします。
逆に今回の年度切替も条件で絞り込ませる方法と同じですね。大量データの対応する場合も今回のことを 参考にさせていただきます。 ところで、年度の切替を具体的に対応する方法は「FillBy本年」や「FillBy前年」のSQLを作成しておき、IF文 等で使い分けることになるのでしょうか。(新規スレッドで質問瀬べきでしょうがよろしお願いいたします) テストデータを作成し、実際にパフォーマンスのテストを行ってみます。人間が少しかったるいと感じるのは ボタンを押してから私は100ミリセック程度ではないかと考えていますが、一般にはどの程度で感じるので しょうか。 | ||||||||||||
|
投稿日時: 2008-04-11 11:28
私は、「年度」として 2006 とか 2007 とかで保持したほうがよいと思います。 そうしておけば、後半の質問にある Fill するためのメソッドとしては、 「FillBy年度」みたいなもの1つで、引数を1つ取るようにすれば十分だと思いますが、いかがでしょうか? また、0 と 1 で保持するようにすると、年度切り替えのときに全レコードの UPDATE が必要にもなります。 「過去年数」として保持するための理由として挙げていらっしゃる「将来のこと」とは、 具体的にどういうことでしょうか? | ||||||||||||
|
投稿日時: 2008-04-11 11:50
テッテさん、ありがとうございます。
この意味は年度別のテーブルを持って切り替えたほうがいいという意味でしょうか。 次の意味がよく分りません。もう少し詳しくお願いいたします。 ※「FillBy年度」みたいなもの1つで、引数を1つ取るようにすれば十分だと思いますが
現在は本年度を含めて3年間を切り替えることになっていますが、運用してみて5年間 の切替や10年間の切替などの仕様変更も考えてのことです。 最初の「年度別にテーブルを保持氏ら方が・・・」の部分をもう少し詳しく教えてください。 修正:年度別にテーブルを保持氏ら方が→年度別にテーブルを保持した方が [ メッセージ編集済み 編集者: One.net 編集日時 2008-04-11 12:17 ] | ||||||||||||
|
投稿日時: 2008-04-11 11:57
さかもとです。
>>最初の「年度別にテーブルを保持氏ら方が・・・」 いえ、項目名で「年度」をテーブルに追加したとして 年度=0 年度=1 年度=2 とするのではなくせっかく「年度」という名前なのですから 年度=2006 年度=2007 年度=2008 としたほうが分りやすいのでは? という意味だろうと思います。 0よりは2006 のほうが人間が見てもわかりやすいですし。年度が変わった場合にいちいち「今年の0は2007だから・・・」とか気にしなくてもよくなります。 _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||||||||||
|
投稿日時: 2008-04-11 12:15
さかもとさん、ありがとうございます
2006 とか 2007 とテーブル名を年度で表示させたほうがという意味ですか。了解しました。 全面修正 [ メッセージ編集済み 編集者: One.net 編集日時 2008-04-11 12:19 ] [ メッセージ編集済み 編集者: One.net 編集日時 2008-04-11 12:35 ] | ||||||||||||
|
投稿日時: 2008-04-11 12:39
伝わりにくかったようですみません。
さかもとさん、フォローありがとうございます。 意味はさかもとさんのおっしゃるとおりです。 テーブルは1つで、以下のような形式を想定していました。 年度 発行年月日 … ---- ---------- 2006 2006/04/01 2006 2006/08/22 2007 2008/01/20 データは適当ですが、こんなような構造にします。 その上で、TableAdapter の FillBy〜 には引数を設定することができますので、 それを使います。以下のような手順で (1) Visual Studio のデータセットのデザイナ(xsd ファイルを開いたときに表示される画面)で、 〜TableAdapter を右クリックして「クエリの追加」を選びます。 (2) 「TableAdapter クエリの構成ウィザード」で、 「SQLステートメントを使用する」→「複数行を返すSELECT」を選択し、 「SQL SELECT ステートメントの指定」の画面で、以下のように入力します。 (列やテーブルの名前は適宜置き換えてください。) SELECT 発行年月日, …(列名のリスト) FROM 販売テーブル WHERE 年度 = ? また、その次のメソッド名の指定では、FillBy がデフォルトになっているので、 FillBy年度 みたいな名前に変えておきます。 (3) サーバ エクスプローラからドラッグしたのなら、 画面の Form_Load に、自動生成された以下のようなコードがあるはずです。 Me.〜TableAdapter.Fill(Me.〜DataSet.販売テーブル) これを、以下のように書き換えます。2007 の部分には年度を指定してください。 Me.〜TableAdapter.FillBy年度(Me.〜DataSet.販売テーブル, 2007) このようにして、TableAdapter のクエリに引数を指定することができますので、 これを使ったらどうかというお話でした。 さかもとさんがおっしゃっているように、意味的にわかりやすいですし、 データを蓄積するときも、この構造の方がわかりやすいと思います。 3年間保持するのがルールなら、2007→2008の年度切り替えで、 2004年度のデータを削除すればよいわけです。 これなら5年になろうと10年になろうと、対応が難しいことはないと思います。 | ||||||||||||
|
投稿日時: 2008-04-11 12:53
こんにちは。ぴんふです。
さかもとさん、てってさんの言ってるのって・・・
こんなイメージだと思って読んでましたが。。。 違ってたら指摘してください。 スレ主さんはわざわざ面倒な方法を選びたがってるような 気がしていまいます。 こちらも違ってたら指摘してください。 今回のケースはテーブルは一つにしたほうが 開発・運用の両者とも楽だと思いますが。 | ||||||||||||
|
投稿日時: 2008-04-11 12:56
あ。推敲してる間に一部かぶったようで・・・。
テッテさんへ ハンドル間違えてすみません。 |