dポイントプレゼントキャンペーン実施中!

VB6だったら複数テーブルを結合して取得したrecordsetを
表に1行ずつセットできましたが
VB2008で同じことをやりたい場合はどうすればよいのでしょうか?
1つのテーブルを検索してDataGridViewに接続させるやり方は
いろいろな本にあるのですが複数テーブルの場合がありません。
DataGridView上で編集できなくても行を選択して
別画面で編集するのでデータをDataGridViewに表示させるだけでOKです。
よろしくお願いします。

A 回答 (4件)

どうもです。



古い記事によると
DataTableの結合は
コード上ではできないようですね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …

いつからかは知りませんが、
http://oshiete1.goo.ne.jp/qa1193685.html
データセットの「Relation」プロパティを使用することで同じような事ができそうです。
多分、DataSetにデータベースの主キーのようなものを設定して、結合しよう。的な考えだと思います。

>複数テーブルを結合したdatatableを作って
>bindするとDataGridViewに表示できますか?

については、コード上で
単一テーブルの結果をDataGridViewに表示できているなら
全く同じ考え方でできますよ。

この回答への補足

>単一テーブルの結果をDataGridViewに表示できているなら
>全く同じ考え方でできますよ。
できました。ありがとうございます。

このやり方でDataGridViewを表示させると
更新はdatatableのupdateができないので
bindするメリットがなくなってしまいそうですね。

Relationを使った方が美しいコードになりそうです。
がんばります。
ありがとうございました。

補足日時:2009/07/23 13:57
    • good
    • 3

遅くなりました。


バインドの件、申し訳ないです。
Fill()の事で合っています。

実際にこちらでも複数テーブルの接続を試して見ましたが、
SQL文(つまりソースで)に複数テーブルを結合するクエリを書いて
Fillすれば大丈夫です。

SQLでテーブルの結合の方法が分からない場合は、
別途調べる必要がありますが、
VisualStudioには
テーブル結合には便利なクエリビルダという機能があるようなので
簡単な結合だけだとGUIだけでいけるでしょう。

参考サイトを貼り付けておきますね^^

参考URL:http://msdn.microsoft.com/ja-jp/library/cc708912 …

この回答への補足

何度もありがとうございます。
やっと少しわかりました。

GUIでやると簡単そうですがコードでできるだけ頑張りたいと考えています。
まだよくわからないですが
複数テーブルを結合したdatatableを作って
bindするとDataGridViewに表示できますか?
(やり方は不明です。)

補足日時:2009/07/23 10:33
    • good
    • 0

Viewを作らない方法の詳細ですが、



型付データセットを使って、DataGridViewにバインドしているのでしょうか?
それともソースコードでクエリを記述してバインドしているのでしょうか?
いずれにしても、SQL文を記述してテーブル結合を行って、そのクエリ結果をDataGridViewにバインドしてあげれば可能です。

結合の仕方は
select * from TABLE_A
inner join TABLE_B
(または left outer join 等)
のように、クエリを書けばOKです。

この回答への補足

出来るだけソースで実行したいです。
バインドがちょっと難しくて理解できませんでした。
Fillとは違うのでしょうか?

補足日時:2009/07/10 22:11
    • good
    • 1

手っ取り早くいくと、


SQLで複数のテーブルを結合した結果を(joinを使って)
バインドする事が可能だと思います。

実装によりますが、SQLサーバにViewがあるなら、そのViewを1テーブルと見立ててもOKです。

この回答への補足

ありがとうございます。
Viewを作らない方法の詳細が知りたいです。

補足日時:2009/07/10 06:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A