- - PR -
レコードセットのテーブルをフォームにドラック&ドロップしても正常にDataGridViewが作成できません。
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-07 17:20
Visuai Basic 2005 Exprese Edition でWindowsアプリケーションを開発しています。
データソースに存在しているあるテーブル(m10_本人区)だけが、フォームに ドラック&ドロップしても連結したコントロールが作成できません。 以下、DataGridViewの例でその詳細を説明します。 データソースにある「m10_本人区」テーブルをDataGridViewであることを確認し、 新規フォームにドラック&ドロップしてDataGridViewを作成しましたが、 ツールボックスからDatyaGridViewをドラック&ドロップした場合と同じ黒いBoxが 張り付くだけで、フィールドやデータ表示用セル等は表示されません。 (M10本人区BindingNavigatorは作成されています) このBoxを右クリックしてプロパティを見ますと、次のように設定されています。 DataBindings の Text :m10本人区BindingSource (Name):M10本人区DataGridView Row Template:DataGridViewRow { Index=-1 } コンポーネントトレイには、4個のコンポーネント(DataSet、BindingSource、 TableAdapter、BindingNavigator)が正常に表示されています。 ちなみにデバッグしますと、デザインと同様の黒色Boxが張り付いているだけで フィールドやデータは表示されません。ただしこのM10本人区テーブルには5つ レコードが格納されていますが、BindingNavigatorのレコード数には1/1としか 表示されています。 以下、状況説明を追加します。 1.テーブル(m10_本人区)を詳細に設定して、ドラック&ドロップすると正常に 全てのフィールドが作成されたようにみえますが、デバッグしますと何も表示 されません。 2.この「m10_本人区」テーブルは「データソース構成ウイザード」でデータセット 作成を終了した後に、「データソース構成ウイザード」で追加したテーブルですが、 データセットデザイナでクエリを実行して「データのプレビュー」で見ても正常に 表示されています。 3.この「m10_本人区」テーブルは、ComboBoxのリスト表示用テーブルで、ComboBox に設定すべく、DataSourceプロパティで「他のデータソース」から探してみても、 DataSourceとして見つかりません。 以上、狐につままれたような思いをしていますが、なにが原因か教えてください。 |
|
投稿日時: 2007-09-07 19:07
まず、必ず起きる現象なのか、今おかしくなっているだけなのか整理しましょう。
データソースから1回削除して、再度追加してみてください。 これで上手くいくのなら、一時的なものですね。 不具合も絡んでいる可能性はありますが。 上記でうまくいかない場合は、データソースへの追加の仕方や、 追加しようとしているオブジェクトに問題がある可能性があります。 下記を教えてください。 「テーブル」とありますので、データソースがDBのテーブルだと思うのですが、 データベースはSQL Server 2005 をお使いですか? また、DB上でのテーブルの各カラムのデータ型を全部挙げてもらえますか? それだけわかれば、こちらでも検証できると思います。 その結果、こちらでも再現したら不具合の可能性が高いですね。 |
|
投稿日時: 2007-09-07 20:54
KIさん、いつもお世話になります。このことで開発が先に進まず困っています。
KIさんのご質問に以下の通り報告します。 「データソースから1回削除して、再度追加してみてください。」 ーー→今も同じ内容で違う名前(m10_本人分)のテーブルを作成し、同様な操作を 行いましたが、ドラック&ドロップしても同じ黒いBoxが張り付くだけです。 データベースはSQL Server 2005 をお使いですか? Access2002です DB上でのテーブルの各カラムのデータ型を全部挙げてもらえますか? フィールド名 データ型 区分 テキスト型(5字) 金額 数値型(短精度浮動小数点型、少数点表示桁数:1) データセットのクエリーを実行すると正常に動作するにもかかわらず 連結(バインディング)が出来ないのは、Edition の問題と考えて おりましたが、データ元のデータベースに問題があるのでは、とお考え でしょうか。 こちらでも検証してみます。 |
|
投稿日時: 2007-09-07 21:20
KIさん、追加報告します。
データソースへの追加の仕方の問題について・・・ ーー→追加方法を次の2つの方法で、再度試してみました。 1.DataSetを右クリック→「ウイザードでデータセット構成」→テーブル追加 2.データセットデザイナーへデータベースエキスプローラからドラック&ドロップ 追加しようとしているオブジェクトの問題・・・ ーー→カラムのデータ型が「短精度浮動小数点型」に問題があるのでは、と整数型 にしてテーブルを作成しましたが、結果はまったく同じです。 取り急ぎ報告します。 |
|
投稿日時: 2007-09-08 10:28
▼追加報告
たまたまですが、同じACCESSのmdbファイルを元に作成したソリューションが以下の 通り3個ありました。 1.Application:現在作成中のソフト 2.Application_B:上記バックアップ用(1週間前)のソフト 3.Test1:アプリケーション開発のためのテスト用ソフト 上記のソフトで以下のテストを行いました。 A.後から追加作成したデータテーブルをドラック&ドロップしてDataGridViewを作成 B.最初から作成されたデータテーブルをドラック&ドロップしてDataGridViewを作成 C.問題のデータテーブル(m10_本人区)を下のコードでデータ内容確認 (m10_本人区のクエリ実行は正常) Me.M10本人区TableAdapter.Fill(Me.ApplicationDataSet.m10本人区) TextBox1.Text = ApplicationDataSet.m10本人区(0).区分 TextBox2.Text = ApplicationDataSet.m10本人区(0).控除額 TextBox3.Text = ApplicationDataSet.m10本人区(1).区分 TextBox4.Text = ApplicationDataSet.m10本人区(1).控除額 TextBox5.Text = ApplicationDataSet.m10本人区(2).区分 TextBox6.Text = ApplicationDataSet.m10本人区(3).控除額 ・・・・・・・・・テストA ・・ テストB ・・・ テストC Application・:・ 失敗 ・・・ 正常 ・・・・ 正常 Application_B:・ 失敗 ・・・ 正常 ・・・・ 正常 Test1・・・・・:・ 正常 ・・・ 正常 ・・・・テストなし 以上のことから下のことが判明した。 1.最初に作成したデータテーブルでは、正常に作成される。 2.後から追加したデータテーブルでは、正常に作成されない。(Test1は正常) 2.いずれも「M10本人区TableAdapter」は正常に動作している。 よって、作成中のApplication及びbackingUp(Application_B)の両方の 「M10本人区BindingSource」が正常に機能していない、またBindingNavigatorも レコード数が1/1と正常ではないといえるのではないでしょうか。 (実際の総レコード数は5個) [ メッセージ編集済み 編集者: だんじり 編集日時 2007-09-08 11:25 ] [ メッセージ編集済み 編集者: だんじり 編集日時 2007-09-08 11:36 ] |
|
投稿日時: 2007-09-08 14:56
お返事遅くなってすみません。
手元にAccessがないので検証できません。 私も原因がわかるわけではなくて、調査の方針を示しているだけですのであしからず。 こういうときは、新しく同じようなものを作り直してみると、 原因がはっきりすることが多いです。 VBのプロジェクトもmdbも新しく作成し、 再現に最小限必要なテーブルのみをmdbに作成し、 その後、VBの方でデータソースに追加してみます。 それでも再現するのであれば、何らかの不具合の可能性が高いですね。 |
|
投稿日時: 2007-09-08 17:08
KIさん。ありがとうございます。
私も、このトラブルは原因を見つけるには大変だとおもい、今日は朝から ACCESSで同一データベースを作成し、そのデータベースを元に「データ ソース構成ウイザード」でデータセットの作成までを終了させました。 ところが作成したフォームは28個もあり、1つ1つ最初から作成せずに 現在作成してあるフォームをコピーするような方法はないのでしょうか。 もし簡単に複写しながら作成する方法があれば、教えてください。 そして、順番に作っていきながら、その都度原因追及のテストを行ってみ ます。もし突き止められれば、スレッドに報告します。 KIさん。参考意見ありがとうございました。 |
|
投稿日時: 2007-09-09 14:25
フォームを複製する方法はだんじりさんが少し前に質問された
スレッドの通りだと思いますが・・・ それ以前に、フォーム28個全部同じように作らないと エラーにならないわけではないですよね? そもそも特定のフォームにドラッグ&ドロップしたときだけ 上手くいかないという事象なのですか? そうでないのなら、実験用にフォームを1つ作れば それで十分だと思いますが? |