
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を使っています。
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.2
- 回答日時:
こんにちは。
データセットを取得する時にSQL文を発行して取得していれば、上位1000件をソートするSQL文を発行出来ればいいと思います。
SQL文は 昇順での並べ替えの場合
SELECT フィード名 FROM テーブル名 WHERE 抽出条件 ORDER BY フィールド名 ASC
降順はASCをDESCにします。
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マスタ = データセット取得()
この時点でしょうか・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- IT・エンジニアリング 大規模言語モデルは今後どのように進化していくでしょうか? 1 2023/07/20 19:17
- Excel(エクセル) Excel 効率的な名簿と得点の管理の仕方 8 2022/08/07 08:15
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETでファイル名順にファイ...
-
配列の問題
-
C# ArrayListを二次元配列のよ...
-
VBA基本構文の作り方 2列の...
-
C# DataGridView のヘッダーセ...
-
多次元配列のソート方法
-
C言語でファイルの中身をソー...
-
2次元配列を複数項目でソートし...
-
csvファイル内にてソートす...
-
C++ 入力した3つのint型の整数...
-
C言語について
-
数字文字列のソート方法
-
VBScriptで重複レコードを削除...
-
System.IO.Directory.GetFiles...
-
構造体のリストをソートしたい。
-
リスト構造のソートで悩んでま...
-
C言語 配列の長さの上限
-
関数から配列を返すには?
-
VBAのプログラムで、DIAG = 1# ...
-
引数で指定された配列の要素数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VBA基本構文の作り方 2列の...
-
C言語・要素除去
-
C# DataTableの行をソートしてD...
-
VB.NETでファイル名順にファイ...
-
構造体配列の並べ替え
-
あるディレクトリ内のファイル...
-
配列の問題
-
10個の整数を入力して小さい順...
-
2次元配列を複数項目でソートし...
-
構造体のリストをソートしたい。
-
DataGridViewソート時に先頭行...
-
DataGridViewのソートを止めたい
-
datagridviewの並べ替え
-
C++ 入力した3つのint型の整数...
-
DataGridViewの複数列を連動し...
-
Excelですべての組合せ(重複組...
-
C#のリストボックスで、クリッ...
-
VBScriptで重複レコードを削除...
おすすめ情報