DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridへのデータ表示について

環境/言語:[OS : Windows XP Professional / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

【解決したい問題】

現在Windowsアプリを開発していて、MDBからテーブルの内容をDataGridへ表示するフォームを作成しています。

まだまだ初級者なもので、参考書以外でDataGridにふれるのは今回がほぼ初めてである事と
データアダプタなども基本的にはデザイン画面にてウィザードで作成している事を前置きさせて下さい。

さっそく質問ですが、
上記のようにウィザードで作成したアダプタをFillしてDataGridにデータを表示するところまではうまくたどり着けたのですが
列の並びがテーブルの通りに(MDB上でテーブルを開いた時と同じに)ならなくて困っています。
なにか予想される原因や解決策などあれば助言いただけないでしょうか?

【解決するために何をしたか】

気が付いたこととして
データアダプタ構成ウィザード中のクエリビルダでテーブルを追加するとフィールドの並びが
実際のテーブルとは違いソート順(A→Z)?になっているようでした。そのため
「*(すべての列)」をチェックするのではなく、一つ一つ実際のテーブルのフィールド順に
項目をチェックしていき、右クリックで「実行」を選択してみるとクエリビルダ上では実際のテーブルと同じ表示結果が得られました。
ですが、ウィザード終了後にアプリを実行して確認するとやはりDataGridの列の並びがソート順(A→Z)?になってしまい
クエリビルダ上での設定が反映されませんでした。

こちらの掲示板を知ってから初めての書込みなので、うまく意図が伝えられたか自信がないですが
よろしくお願い致します。
お世話になります。

■No16611に返信(典武1点さんの記事)
以下の点を確認されるとよいと思います。

1. #Region " Windows フォーム デザイナで生成されたコード "
の中の
DataAdapter 構成ウィザードで吐き出されたソースコードの内、
SelectCommand.CommandText
が、
> 「*(すべての列)」をチェックするのではなく、一つ一つ実際のテーブルのフィールド順に
> 項目をチェックしていき、右クリックで「実行」を選択してみるとクエリビルダ上では実際のテーブルと同じ表示結果が得られました。
の時と同じ項目の並びとなっているか?

2. データグリッド側の DataGridTableStyle で何か設定している場合、
それに誤りが無いか?
なおこ(・∀・)さん、回答ありがとうございます。

> 以下の点を確認されるとよいと思います。
今は自宅なので、明日さっそく確認してみようと思います。

ちなみに
> 1. #Region " Windows フォーム デザイナで生成されたコード "
で項目が同じ並びでなかった場合、コード上で並びを修正して良いものなのでしょうか?
前述の通り、まだまだ初級者なもので「フォームデザイナで生成されたコード」は
コード上でいじっちゃダメ?とか、いじるとマズイ事になる?とか勝手な思い込みや恐れを抱いてる…かもです。(;^_^A

> 2. データグリッド側の DataGridTableStyle で何か設定している場合、
> それに誤りが無いか?
の方は、特にDataGridTableStyleを設定してはいないです。ちょうど今勉強中です。
フィールド名がすべてアルファベットなのでDataGridに表示する列名を変えられないかな?
と思いまして。("MakeYMD" → "作成日" など)

とりあえず明日確認後、また報告いたします。
報告内容によっては、また回答いただければ幸いです。
> ちなみに
>>1. #Region " Windows フォーム デザイナで生成されたコード "
> で項目が同じ並びでなかった場合、コード上で並びを修正して良いものなのでしょうか?
> 前述の通り、まだまだ初級者なもので「フォームデザイナで生成されたコード」は
> コード上でいじっちゃダメ?とか、いじるとマズイ事になる?とか勝手な思い込みや恐れを抱いてる…かもです。(;^_^A

僕は使ったことがないのですが、ウィザード上で並びを指定できないのですか?
できるのなら、直接いぢらないで作り直す方が良いです。
こんにちは、お世話になります。

> 1. #Region " Windows フォーム デザイナで生成されたコード "
> の中の
> DataAdapter 構成ウィザードで吐き出されたソースコードの内、
> SelectCommand.CommandText
> が、
>>「*(すべての列)」をチェックするのではなく、一つ一つ実際のテーブルのフィールド順に
>>項目をチェックしていき、右クリックで「実行」を選択してみるとクエリビルダ上では実際のテーブルと同じ表示結果が得られました。
> の時と同じ項目の並びとなっているか?
たしかになっていませんでした。


R・田中一郎さん、回答ありがとうございます。

> 僕は使ったことがないのですが、ウィザード上で並びを指定できないのですか?
申し訳ありません。未だによく分かって(理解して)ない状態です。
一つ一つチェックした順に項目がセットされていくので、
その行為自体が並びを指定してることになるんじゃないかな?と勝手に思っている次第です。


それで、実は結果としてはうまく表示されるようにはなりました。ただ、特に違う作業を行ったわけではなく
> できるのなら、直接いぢらないで作り直す方が良いです。
たしかに一度作り直すのもありだなと思い、既作成のアダプタを削除して最初から全く同じ手順で作成しなおしてみました。
すると今度は、SelectCommand.CommandTextを含め思い通りの結果を得ることができました。
なぜ、今度はうまくいったのか今ひとつ状況は把握しきれていませんが、結局は私自身が何らかの設定ミスをしていたのだと思います。

大変お騒がせして誠に申し訳ありませんでしたm(_ _)m
これに懲りずまた質問すると思いますがよろしくお願い致します。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板