No.1
- 回答日時:
早い/遅いは、
・現場の環境
・あなたが発行しているSQ
・テーブルのキー状態と、そのオブジェクト間の関連性
などなど、、、
全てを知らない限り、何も言えません。
それらのことは、質問をするより、
「現場で思いつくパターンの簡単なサンプルをテスト実行する」
というのが、普通だと思います。
データセットのソート方法は以下に記します。
------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'何らかの関数で、あらかじめデータセットは取得出来ているものとする
Dim l_dstマスタ As DataSet
l_dstマスタ = データセット取得()
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'ソートをして、データを抽出する(抽出条件 = Nothing/ソート条件のみ指定)
Dim l_drwデータロウズ As DataRow()
Dim l_strソート条件 As String = "カラム1 ASC, カラム2 DESC"
l_drwデータロウズ = l_dstマスタ.Tables("テーブル名").Select(Nothing, l_strソート条件)
'抽出結果を、新たなデータセットへマージする(データテーブルでもマージ可能)
Dim l_dstデータセット As New DataSet()
l_dstデータセット.Merge(l_drwデータロウズ)
この回答への補足
たとえば、郵便番号データ(約12万件)で、それを郵便番号順に300件ずつ表示するとします。
ソートする以前に12万件のDatasetを取得しないといけないのですが、この時点で非常に
時間がかかってしまいます。
Dim l_dstマスタ As DataSet
l_dstマスタ = データセット取得()
この時点でしょうか・・・
No.2
- 回答日時:
こんにちは。
データセットを取得する時にSQL文を発行して取得していれば、上位1000件をソートするSQL文を発行出来ればいいと思います。
SQL文は 昇順での並べ替えの場合
SELECT フィード名 FROM テーブル名 WHERE 抽出条件 ORDER BY フィールド名 ASC
降順はASCをDESCにします。
No.3
- 回答日時:
>Dim l_dstマスタ As DataSet
>l_dstマスタ = データセット取得()
>この時点でしょうか
ん?
>上位1000件のレコードをデータセットに取得
>しかし、この時点でソートがかけられないのでビューを作成時にソート
と言われておりましたので、取得した後のデータセットをソートし、データセットに格納する方法を示したのです。
ですので最初の部分は、質問者さんの既存処理を表しております。
ちょっと整理しましょう。。。
>郵便番号データ(約12万件)
>12万件のDatasetを取得しないと
まず。。。
・データベースは何でしょう?「オラクル?SQLサーバ?アクセス?などなど」
・そのテーブル構成はどのようになっていますか。主にキーを知りたいです。
・既存のデータセットを取得するときの文と、「300件ずつ」表示するための編集条件と、表示するためのソート条件
これらを示していただけませんか?
この回答への補足
すみません。中途半端で。
データは次のところから全フィールドをインポートしています。
フィールド名は仮にF1、F2、F3・・・としておきます。
http://www.post.japanpost.jp/zipcode/dl/kogaki.h …
それの他にIDというオートナンバーのフィールドをもちそれが
主キーです。テーブル名はKEN_ALLで、DBはAccessのMDBです。
SQLは "SELECT TOP 300 * FROM KEN_ALL WHERE(F7 Like '%府%')"
という感じです。F7に都道府県名がはいっているとします。
最初は#2さんの回答のようにORDERを指定していましたが、
それだと取得数(300)が取れなかったので、これは.NETの
仕様かと思い、VIEWでORDERを指定しようと思いました。
"SELECT TOP 300 * FROM KEN_ALL WHERE(F7 Like '%府%')
ORDER BY F5 ASC, ID ASC"
oleDa = New OleDb.OleDbDataAdapter(SQL, oleCn)
DAO、ADO、DataReaderだとTOP値が生きてくるのですが・・・
No.4ベストアンサー
- 回答日時:
>最初は#2さんの回答のようにORDERを指定していましたが、それだと取得数(300)が取れなかったので、これは.NETの仕様かと思い、VIEWでORDERを指定しようと思いました。
もしかして.NET2005ですか?
件数の仕様は聞いた事がありませんが、2005はまだ触れてないので、正確にはわかりません。
私の.NET2002では普通に300件取れましたが、、、、
新規のプロジェクトを起こして、以下を実行したらどうなりますか?
Imports System.Data.OleDb
Module Module1
Sub Main()
Dim l_strPath As String = "C:\県ALL.mdb"
Dim l_strSQL As String = ""
l_strSQL &= "SELECT TOP 300 * FROM KEN_ALL" & vbCrLf
l_strSQL &= "WHERE(F7 Like '%府%')" & vbCrLf
l_strSQL &= "ORDER BY F5 ASC, ID ASC"
Dim l_cnn As New OleDbConnection( _
String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", l_strPath) _
)
Dim l_cmd As New OleDbCommand(l_strSQL, l_cnn)
Dim l_adp As New OleDbDataAdapter(l_cmd)
Dim l_dst As New DataSet()
l_adp.Fill(l_dst)
MsgBox(l_dst.Tables(0).Rows.Count)
End Sub
End Module
ありがとうございます。
もらったサンプルではTOP値で指定したレコード数が表示
されました。
私の作っているのではほとんど意味のない値ばかり表示
されていた上に、買った本のサンプルでは、SORTはView
でしか実行されていなかったために勘違いしてしまいま
した。
もう一度、自分のソースをよく見直してみようと思いま
す。
なお、VB2005を使っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
n番目に大きい数を求めるアル...
-
あるディレクトリ内のファイル...
-
C# DataGridView のヘッダーセ...
-
VBScriptで配列のソートをする...
-
C言語・要素除去
-
int num[10]という配列に、適当...
-
DataGridViewでのソート制御
-
Excelですべての組合せ(重複組...
-
Java<昇順でソートするには>
-
データ数が多い場合のソート
-
2次元配列を複数項目でソートし...
-
VBA基本構文の作り方 2列の...
-
ListViewのソートについて
-
excel VBA リストビューの行...
-
主キーソート(キーの優先順位...
-
ArrayList とSortedList
-
構造体配列のソート
-
偶数奇数の判別!!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VB.NETでファイル名順にファイ...
-
あるディレクトリ内のファイル...
-
VBA基本構文の作り方 2列の...
-
ファイル名「1.jpg ~10.jpg~...
-
Excelですべての組合せ(重複組...
-
vbでDataTableの抽出コピー
-
C# DataTableの行をソートしてD...
-
listboxの並び替え
-
(VBA) Dir 関数で取得するファ...
-
コレクションの数値をSortで並...
-
C言語・要素除去
-
Fortran77で多次元配列を並び替...
-
C# DataTable ソートについて
-
excel VBA の条件をつけての列...
-
VBScriptで重複レコードを削除...
-
文字列をソートする方法
-
n番目に大きい数を求めるアル...
-
C言語でアナグラムを求めるプロ...
おすすめ情報