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

DataSetのSortについて

環境/言語:[Win2000 Vb.Net]
分類:[.NET]

こんにちは。
Datasetの並べ替えについて自分では解決でなかったので書き込みさせていただきました。
DataViewを使用すれば並べ替えはできるのですが、Datasetの中身?は並び変えされていませんよね?
何か方法があれば教えていただけないでしょうか。よろしくお願い致します。
■No10263に返信(なべさんの記事)
> こんにちは。
> Datasetの並べ替えについて自分では解決でなかったので書き込みさせていただきました。
> DataViewを使用すれば並べ替えはできるのですが、Datasetの中身?は並び変えされていませんよね?
> 何か方法があれば教えていただけないでしょうか。よろしくお願い致します。

DataAdapterのプロパティ、「CommandText」内のSQL文を編集してください。
SQL文は、「Order by」です。
ウィザードが出るはずなので、簡単に操作できます。
無知で申し訳ありません。
DatasetをどうやったらDataAdapterで呼べますか??コードでDetasetなどを作ってるためにウィザードが出ずにぺがらぼさんの書き込みを検証することができませんでした。

1 a 1
2 b 3
3 c 2
のようなDatasetの中身を

1 a 1
3 c 2
2 b 3
のような感じに並べる感じです。
よろしくお願い致します。
・・・。
なべさん、あなたの作成しているプログラムではないのですか?他の人のコードですか?
ウィザードでなくコードで全部できるのであれば、SQL文を書いたとこが分かりますよね。
単にそのSQL文の最後に、
ぺがらぼさんの言ってる、ORDER BY 列名 [ASC|DESC]{,列名2 [ASC|DESC]...}を追加するだけですが。

並んでない状態では既に呼び出せていると、見てる人は解釈したと思いますが。


ちなみにこれは、DataSetのDataTableの並べ替えではありません。
DataSet・DataTableそのものには並び順制御の概念はないので、挿入であれアダプタによる呼び出しからであれ、
結局行がセットされた順になるので、これを利用して、
呼び出し用のSQLで取り出しデータを並べ替えておけば結果として呼び出しデータが並びになっている、
というものです。
後から並べ替えるというか、随時指定した並びでDataTableにアクセスしたいのであれば、
DataViewを使うしかないと思います。
色々言葉足らずで申し訳ありません。

結局自分の行いたいことは
>後から並べ替えるというか、随時指定した並びでDataTableにアクセス
ということです。

DataSet.Relations.Add(a,b)で2つのDataTableをリレーションしてるのですが、
並び替えを行ったDataTableと常にリレーションをとりたいのです。
(外したことを書くかもしれませんが)

現在直接DataTableにアクセスしている部分のうち、順序を意識したい部分を、
DataViewにアクセスするように変更するだけでは対応できないですか?


DataRelationは、お互いのデータの関連を制約として制御してデータの完全性を維持するための機能
(とそれを維持管理するための連鎖更新の機能等)を提供するものだと思いますから、
無理やりソート済みDataTable(ないしは、ソート管理専用のサブセット)と作業用DataTableを用意して
リンクさせ、順番を意識したアクセスをする、というような使い方は、?と個人的には思いますが、
どうしてもそのような形を作りたければ、「実際に」DataTableをソートするしかないと思います。

※ただし、「ソート済みテーブル」の方がリレーション上の親になる場合、難しいと思います。
返事遅くなりもうしわけありません。
こどさんの書き込みを見て閃き別の方法で自分のやりたいことが実現できました。
ありがとうございます。
解決済み!

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