- PR -

列の追加がデータベースファイルに更新されない

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-06-24 13:10
引用:

jornada690さんの書き込み (2006-06-24 03:51) より:
' インメモリのDataSet に対する更新処理
resultDS.Tables("Products").Rows(3).Item("品種名") = "111"
resultDS.Tables("Products").Columns.Add("222") ※1


どういうことを目論まれているのか分かりませんが、RDB に対して列を追加する操作は DDL と呼ばれ、通常の INSERT などの行を追加する操作(DML)とは違います。実行時に DDL をやることを前提としたテーブル構造では正規化もされないことになり、DBMS の変更も困難になりますので、よほどのことがないかぎりやらないほうが良いです。
データーベースを管理するツールを作られているのならば、その限りではありませんが。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
_________________
--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
jornada690
常連さん
会議室デビュー日: 2006/06/13
投稿数: 25
投稿日時: 2006-06-24 14:19
ご指摘ありがとうございます。
私がやろうとしていますのは、装置の制御ソフトで従来は位置データなどを
テキストファイルで保存していましたが、品種が多くなるにつれてファイルの数も
多くなってしまうので、Accessなどのデータベースファイル1つで管理しようとしています。
仕様追加などでパラメータが増えた場合のことを考えてお聞きしました。

NAL-6295さん、OleDBCommandを調べて実際に列を追加することができました。
ありがとうございました。ただ、列の追加により今後unibonさんが言われている
ようなことで不具合が発生しないか心配ですが。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-24 21:13
引用:

jornada690さんの書き込み (2006-06-24 14:19) より:

NAL-6295さん、OleDBCommandを調べて実際に列を追加することができました。
ありがとうございました。ただ、列の追加により今後unibonさんが言われている
ようなことで不具合が発生しないか心配ですが。


動的に列を追加しなければならないような構成なのであれば、その内容を再検討した方が良いです。
例だと、"222" という列を追加しようとしていますが、データが増える度に列を増やすような構成であれば、再度、設計を見直すべきです。

例えば紙面での表をそのままテーブルの設計に用いた場合、次のようになりがちです。
コード:
  1  2  3
A A1 A2 A3
B B1 B2 B3
C C1 C2 C3



上記で6が必要になった場合、6 の列を追加することになります。この場合は、

コード:
A 1 A1
A 2 A2
A 3 A3
B 1 B1
B 2 B2
B 3 B3


このように設計すれば列を動的に増減させる必要はなくなります。

#外しているかな?^^;
jornada690
常連さん
会議室デビュー日: 2006/06/13
投稿数: 25
投稿日時: 2006-06-25 00:12
アドバイスありがとうございます。
なるほどと思いましたが、もしレコード(A, B, C・・・)数が多い場合、
ものすごく縦長になってAccess等で編集するときに見づらいと思いました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-25 20:53
引用:

jornada690さんの書き込み (2006-06-25 00:12) より:
アドバイスありがとうございます。
なるほどと思いましたが、もしレコード(A, B, C・・・)数が多い場合、
ものすごく縦長になってAccess等で編集するときに見づらいと思いました。



動的に列を編集する面倒よりマシ
列の数には制限があるのですが、そこまで伸びたらどうするのでしょう?

で、DDL や IDbCommand については調べたのかな?
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-26 02:20
引用:

Jittaさんの書き込み (2006-06-25 20:53) より:

動的に列を編集する面倒よりマシ
列の数には制限があるのですが、そこまで伸びたらどうするのでしょう?


・・・ですねw

引用:

jornada690さんの書き込み (2006-06-25 00:12) より:

なるほどと思いましたが、もしレコード(A, B, C・・・)数が多い場合、
ものすごく縦長になってAccess等で編集するときに見づらいと思いました。


データに応じて列を増減させるということは普通はしません^^;

行の増減は、レコードの追加・削除にあたりますが、列を増減させるというのは、テーブルの構成を変えることになります。
また、検索条件式を書く場合や、データが格納されるイメージを想像してみて下さい。
どちらが効率よくデータを格納でき、また、どちらがよりデータを扱いやすいでしょうか?

見やすさのためにこれらを犠牲にするというのは、データベースの設計としては、あまりやらないことです。
Access で編集する時や見やすさに関しては、別途アプリケーションを用意するなどの方法を取ることをお勧めします。

#それと、Access ではなく SQLサーバーなどの使用をお勧めします。装置の制御ソフトとのことでしたら、尚更・・・
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2006-06-26 05:18
データベースの正規化を念頭において
もう一度データベースを再設計(テーブルを分割することも含めて)してみてはどうでしょうか。

意図的に正規化より性能、保守性を優先させることもありますが、
今回のケースはこれに該当しないと思いますが。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集

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