@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

開発途中におけるテーブルへの新規列追加方法について

投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-04-04 13:11
WindowsXP VB2005EEでDbはAccess2003を使ってWindowsアプリケーションを作っています。
品名、単価、仕入先等のフィールドを持つ商品Tableあり、この商品TableのDataTableと
BindしたDataGridViewをフォームに表示し、正常に動作しています。ところで開発途中
からこのDataGridView生産地フィールド(列)を追加表示させたく変更することになりました。

生産地フィールドは元のデータベースにもなく、Access側の商品Tableに生産地フィールドを
新規追加してDataGridViewに生産地フィールド(列)を次の手順で表示させることにしました。

1.Access側の商品Tableに生産地フィールドを追加

・・・続けて2005IDEで次のように追加して確認しました。・・・
2.データベースエキスプローラの商品Tableに「生産地」列が追加されていました。
3.ソリューションエクスプローラの商品Tableに「生産地」列が追加されていました。
4.TableAdapter構成ウイザードのクエリビルダで[クエリの実行]でも正常に動作し、
「生産地」列が表示された。(クエリのダイアグラムペインで生産地を追加しました)
5.旧「商品DataGridView」を破棄して、新たにデータソースウインドから商品データソースを
商品DataGridViewにドラック&ドロップしましたが「「生産地」列がBindされません。
もしやと思いDataGridViewの「列の編集」画面でデータバインド列(DataSourceの列)
みましたが、「生産地」列の表示がありません。

私はDataGridViewにデータソースをバインドさせる方法はドラック&ドロップしか知らず、

以上の通りDataGridViewに新規の列を追加することが出来ずに困っています。
コード記述でのバインドはしたことがありませんが、よろしくご指導下さい。


追記:データベース接続はDataAdapterを使用し、型指定されたDataSetです。

_________________


[ メッセージ編集済み 編集者: One.net 編集日時 2008-04-04 13:27 ]

[ メッセージ編集済み 編集者: One.net 編集日時 2008-04-04 14:33 ]
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-04 13:51
ソリューション エクスプローラのデータセットの xsd ファイルを
ダブルクリックすると、データセットデザイナが開くと思います。
ここで「生産地」列が追加されていることを確認されたんですよね?
だとしたら、データソースの定義が更新されていないだけかも知れません。

データソースウィンドウには「生産地」列が追加されていますか?
追加されていないなら、1回ビルドした後、
データソースウィンドウの「最新の情報に更新」でなおると思います。
それでもダメならデータソースから1回削除して、追加しなおしてみてください。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-04-04 14:28
テッテさん、早速のご返事ありがとうございます。
とりあえず質問いただいた内容にお答えします。

引用:

テッテさんの書き込み (2008-04-04 13:51) より:
ここで「生産地」列が追加されていることを確認されたんですよね?


はい、確認しました。さらに「Fill,GetData」の[構成]ボタンをクリックして表示される
TableAdapter構成ウイザードでクエリビルダを実行して表示されるViewの「生産地」列も
正常に表示されています。

引用:

データソースウィンドウには「生産地」列が追加されていますか?


データソースウィンドウにはビルドしなくても「生産地」列が追加されていることを確認しました

引用:

それでもダメならデータソースから1回削除して、追加しなおしてみてください。


データソースから削除するにはどうすればよいのでしょうか。追加削除方法をご指導お願いします。

さらに気が付いたことですが、データソースエクスプローラの該当テーブルを右クリック
して表示される中から「ウイザードでデータセットの構成」を選択すると「データセット
構成ウイザード」は表示され、その上に「DataSetエディタな選択」画面で次のように表示
されます。

選択されたデータセットには、データセットデザインでのみ表示できるオブジェクトが含まれて
います。ウイザードで続行しますか、それともデータセットデザイナーで編集しますか?
と表示されていて、データセットデザイナーで編集する画選択状態になっています。
◎データセットデザイナーで編集する(E)・・→ 「データセットデザイナー」画面
○ウイザードで続行する(C)・・・・・→「データベースオブジェクトの選択」場面

以前はこのようは表示がなくウイザードが続行表示されていたような気がします。
関係がないかもしれませんが、合せて報告しました。
このままでは開発途中でTableの変更や追加も出来なくなってしまい大変困っています。
どうぞよろしくお願いいたします。
_________________
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-04 15:18
引用:

One.netさんの書き込み (2008-04-04 14:28) より:
引用:

それでもダメならデータソースから1回削除して、追加しなおしてみてください。


データソースから削除するにはどうすればよいのでしょうか。追加削除方法をご指導お願いします。


ごめんなさい。簡単にできると思ったんですけど、
削除ってメニューにありませんね。
ソリューションエクスプローラから xsd を直接削除するしかないみたいです。

しかしながら、データソースウィンドウに新しい列が追加されている状態なら、
そこからフォームにドラッグすれば、ドラッグされて作られる DataGridView には、
新しい列は含まれていると思うのですが、それが含まれていないということですか?
ドラッグしたらどうなるのでしょうか?
「生産地」列が含まれない状態で DataGridView が作成されるのですか?

他に確認する点ですが、デザイナでフォームを開いた状態で、
データソースウィンドウの、テーブル名の左の+ボタンで展開してみてください。
列名の一覧が表示されると思いますが、
新しい列名の左側のアイコンはどうなっていますか?
このアイコンは、ドラッグして DataGridView を作ったときに、
どういうタイプの列に表示されるかを表しています。
ここが「なし」になっていると、列が作成されません。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-04-04 16:00
テッテさん、早速ありがとうございます。
質問いただいた項目を返事いたします

引用:

そこからフォームにドラッグすれば、ドラッグされて作られる DataGridView には、
新しい列は含まれていると思うのですが、それが含まれていないということですか?


はい。新しく追加した「生産地」は表示されていません。念のためにDataGridViewの
[列の編集]から「選択された列」で[追加]ボタンをクリックして「データバインド列」
を見ましても「生産地」列は表示されていません。


引用:

データソースウィンドウの、テーブル名の左の+ボタンで展開してみてください。
列名の一覧が表示されると思いますが、
新しい列名の左側のアイコンはどうなっていますか?


他の列名と同様に[abl]と四角で囲われています。このままの状態でデバックしますと
DataGridViewには生産地列が表示されないまま、他は正常に表示されています。
ちなみにDataGridViewのDockをNoneにしてフォームに余白をつくり、その余白に「生産地」列
をTextBoxでドラック&ドロップし、デバックしてみますと「生産地」TextBoxは正常に
表示されています。(mdbの生産地に適当な地名を設定してテストしました)

以上、ご質問に対する調査結果ですが、どうもプロジェクト自体がどこか壊れているのでは
ないでしょうか。もしバインド等のコード記載でテストできるのであれば、ご指示下さい。
大変お手数をおかけしますが、よろしくお願いいたします。


支持を指示に訂正
_________________


[ メッセージ編集済み 編集者: One.net 編集日時 2008-04-04 16:04 ]
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-04 16:18
新しいフォームを作って、そこに DataGridView としてドラッグ&ドロップしてもだめですか?

これで上手くいくようなら、今の DataGridView を削除した後、
データソース関係のコンポーネント(〜DataSet とか 〜TableAdapter とか)を
フォームから削除してからドロップすると上手くいくかも知れません。
フォームの下側にコンポーネントが表示されていますので、
選択して Delete キーなどで削除できます。

それでも解決しなければ、すみませんがお力になれないかも知れません。
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-04-04 17:01
テッテさん、前のスレッドからお付き合いいただき本当にありがとうございました。
フォームは既に何回も削除しては新規作成しています。さらにテーブルの新規作成して
試してみましたが、新規作成したテーブルをドラック&ドロップしてDataGridView を作成
しても灰色のシートがフォームに張り付くだけで、列は全く表示されません。

既に27枚のフォームを開発し正常に動作していますが、このまま新規テーブルやフィールド
の変更が出来ないのなら、これ以上開発を進めても後日修正が出来ないソフトとなって
しまいそうで、困っています。


テッテなんには大変ご親切にご指導いただきましたが私の使っているIDEかプロジェクトに
何か問題が発生しているのかもしれません。
もう少し私なりに勉強してみますが、どなたか同じ経験をお持ちの方がおられましたら
ヒントをいただければ幸いです。

_________________
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-04-04 17:30
あと1つだけ思い当たったので・・・

DataGridView の列の編集で直接、
バインド列を追加することはできませんか?

DataGridView の列の編集画面を開いて
追加を押したときに開く「列の追加」画面で、
DataSource の列に何も表示されないでしょうか?

ここに表示されるのなら、
列を手動で追加することができます。

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