datagridviewのソートについて への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るきお  (社会人)
投稿日時
2009/2/17 07:10:06
こんにちは。
できるだけコピー&貼り付けすればそのまま動く形でコードを貼り付けてください。
そうでないと、まずコードを動くようにする作業から必要になってしまいます。
回答する気がある人でも作業が増えると時間が取れなくなってせっかくの回答がもらえなくなってしまうこともあります。
>このプログラムとデータソースはここの講座のをそのまま使ってます。
できるだけどこのことを指しているか明示していただけるとありがたいです。
今回はこれでしょうか?
http://homepage1.nifty.com/rucio/main/VBdotNet/Database/Database4.htm
のリスト4
提示されているコードと操作が抜粋なので推測してお答えしますが、
DataGridView1を並び替えているのであって、Tableを並び替えているわけではないようですから、
Table.Rows(0)はいつも同じなのではないでしょうか?
DataGridViewとTableは密接な関係がありますが同じものではありません。
Tableを並び替えるにはSQL文でORDER BYを使用するのが一般的です。
ORDER BYについては
http://homepage1.nifty.com/rucio/main/VBdotNet/Database/Database8.htm
の7.ORDER BY 句で説明しているのでよろしければ参照してください。
>長文失礼しました。
いえいえ。普通の長さと思います。
この内容の質問としたら短いくらいです。
できるだけコピー&貼り付けすればそのまま動く形でコードを貼り付けてください。
そうでないと、まずコードを動くようにする作業から必要になってしまいます。
回答する気がある人でも作業が増えると時間が取れなくなってせっかくの回答がもらえなくなってしまうこともあります。
>このプログラムとデータソースはここの講座のをそのまま使ってます。
できるだけどこのことを指しているか明示していただけるとありがたいです。
今回はこれでしょうか?
http://homepage1.nifty.com/rucio/main/VBdotNet/Database/Database4.htm
のリスト4
提示されているコードと操作が抜粋なので推測してお答えしますが、
DataGridView1を並び替えているのであって、Tableを並び替えているわけではないようですから、
Table.Rows(0)はいつも同じなのではないでしょうか?
DataGridViewとTableは密接な関係がありますが同じものではありません。
Tableを並び替えるにはSQL文でORDER BYを使用するのが一般的です。
'▼データ取得
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand
Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Table As New DataTable
'説明の五十音順に並び替える。
SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ ORDER BY 説明"
Adapter.Fill(Table)
'▼値の表示
Dim Value As String
'先頭の値を表示
Value = Table.Rows(0)("説明")
MsgBox(Value)
'▼値の表示
DataGridView1.DataSource = Table
'▼後処理
Table.Dispose()
Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
ORDER BYについては
http://homepage1.nifty.com/rucio/main/VBdotNet/Database/Database8.htm
の7.ORDER BY 句で説明しているのでよろしければ参照してください。
>長文失礼しました。
いえいえ。普通の長さと思います。
この内容の質問としたら短いくらいです。
投稿者 カロリーメートチーズ味  ()
投稿日時
2009/2/17 02:55:05
はじめまして このvb中学校を見て勉強している初心者です。現在データテーブルの所を勉強しているのですが ソートはできるのにソート前でもソート後でも取得できるデータは変わりません。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.Sort(DataGridView1.Columns(0), _
System.ComponentModel.ListSortDirection.Descending)
'↑この文でソートしています。
End Sub
SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ"
Adapter.Fill(Table)
'▼値の表示
Dim Value As String
'先頭の値を表示
Value = Table.Rows(0)("説明")
MsgBox(Value)
↑このプログラムとデータソースはここの講座のをそのまま使ってます。
ソートする前にtable.rows(0)("説明)の部分を表示させると「ゴリラ、サル…」と表示されますが、
ソートした後は「エビ、カニ…」と表示されなければいけないのですが「ゴリラ、サル…」と表示されて
見た目はソートされても内部はそのまんまな感じになってます。何が原因なんでしょうか?
長文失礼しました。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.Sort(DataGridView1.Columns(0), _
System.ComponentModel.ListSortDirection.Descending)
'↑この文でソートしています。
End Sub
SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ"
Adapter.Fill(Table)
'▼値の表示
Dim Value As String
'先頭の値を表示
Value = Table.Rows(0)("説明")
MsgBox(Value)
↑このプログラムとデータソースはここの講座のをそのまま使ってます。
ソートする前にtable.rows(0)("説明)の部分を表示させると「ゴリラ、サル…」と表示されますが、
ソートした後は「エビ、カニ…」と表示されなければいけないのですが「ゴリラ、サル…」と表示されて
見た目はソートされても内部はそのまんまな感じになってます。何が原因なんでしょうか?
長文失礼しました。
datagridviewを並び替えているのであってtableを並び替えているわけではないということやっと理解できました。
非常にご丁寧な返信・ご指導ありがとうございました。