- PR -

DataTableで先頭にカラムを追加したい

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-08-10 22:54
 昨日お休みして PC の前に座りませんでした。遅くなってすみません。

 なんとなく、オブジェクト指向っぽくない設計になっているのかな、と。全容がわからないのでおおよその見当ですが、ポリモーフィズムで特化とか、インターフェイスで呼び出しを共通化など、処理内容(コード)は個々のテーブルで分けなければならないのを、コードを共通化したことが問題、という感じですね。

 回答の傾向を見ていると、問題(質問事項)の解決よりも、問題の本質(質問事項の元になっている問題)の解決を図ろうとしている回答が多いようです。そうすると、
> 何よりも大前提となるのがとにかく時間が無いということでした。
> 設計を見直せというお叱りだけは今回は勘弁してください。。
が、満足できないかな、と。

 ただ、[投稿日時: 2005-08-08 12:38]Java僧さんの提案は一考の余地があるかと思うのですが。。。
 [投稿日時: 2005-08-08 15:40]等で、再々『渡すものはWHERE句のみ』と上がっていますが、テーブル名や、テーブルの構成を変更する余地は全くないのでしょうか。ビューではなく、テーブルにすでにダミー列を入れてしまっておけば、、、まぁ、共通関数といわれているところで、列名もハードコーディングされているなら、テーブルの構成を変更してもダメなのですが。

 顧客要望としてテーブルに格納しなければならないデータが増えることは予想されるので、ハードコーディングされているなら、次回は、柔軟な設計が必要かと思います。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-08-10 23:32
DataTableを継承したDataTableのラッパークラスを作って、
カラム追加のメソッドとデータ操作のメソッドの振る舞いを
変えてやればいいような気がしますが。

・カラム追加を行ったら、ラッパークラスで保持する。
・データのアクセスメソッドのインデックスに追加したカラムの数を足して、
  ラップしたオブジェクトに委譲するようにする。

って感じの振る舞いにしてやればいいような気がします。
(.netは詳しくないので、継承できないのであればゴメンなさい。)
そうまさん
常連さん
会議室デビュー日: 2003/07/17
投稿数: 27
お住まい・勤務地: ジャポン
投稿日時: 2005-08-12 21:50
Jittaさん、かつのりさんお返事ありがとうございます。
また、返答遅れてしまいもうしわけありません。

引用:

Jittaさんの書き込み (2005-08-10 22:54) より:

 ただ、[投稿日時: 2005-08-08 12:38]Java僧さんの提案は一考の余地があるかと思うのですが。。。
 [投稿日時: 2005-08-08 15:40]等で、再々『渡すものはWHERE句のみ』と上がっていますが、テーブル名や、テーブルの構成を変更する余地は全くないのでしょうか。ビューではなく、テーブルにすでにダミー列を入れてしまっておけば、、、まぁ、共通関数といわれているところで、列名もハードコーディングされているなら、テーブルの構成を変更してもダメなのですが。

 顧客要望としてテーブルに格納しなければならないデータが増えることは予想されるので、ハードコーディングされているなら、次回は、柔軟な設計が必要かと思います。


すでに恥の上塗りになってしまっていますが、
推測どおり列名やテーブルなどはすべて関数内でハードコーディングされております。

また、テーブルの構成に関しましては、
すでに何本ものシステムがのっかているマスタを参照しているため、
基本的には不可能でした。やるならばビューだったかもしれません。

引用:

かつのりさんの書き込み (2005-08-10 23:32) より:
DataTableを継承したDataTableのラッパークラスを作って、
カラム追加のメソッドとデータ操作のメソッドの振る舞いを
変えてやればいいような気がしますが。

・カラム追加を行ったら、ラッパークラスで保持する。
・データのアクセスメソッドのインデックスに追加したカラムの数を足して、
  ラップしたオブジェクトに委譲するようにする。

って感じの振る舞いにしてやればいいような気がします。
(.netは詳しくないので、継承できないのであればゴメンなさい。)


ラッパークラス・・・
すいません勉強不足です。

スキルアップ/キャリアアップ(JOB@IT)