- PR -

ADO.NET DataTableよりデータの範囲抽出

1
投稿者投稿内容
よしきち
会議室デビュー日: 2004/06/11
投稿数: 6
投稿日時: 2004-12-22 16:22
ADO.NETでDataTableよりデータを抽出する場合DataTable.Select(…)で抽出できますが、
DataTableに格納されているデータの1行目から10行目までとか、30行目から50行目までとかの抽出方法はないのでしょうか?

DBよりデータを取得する時点でインクリメントなID列を付加して、
DataTable.Select("Id < ○○ AND Id > ○○")
なんてすればよいのですが、SQLやストアドに手を入れる必要が出てきてしまうので、できれば、ADO.NET上で行ないたいのです。
お分かりになる方がいましたら、ご教授ください。
よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-12-22 16:45
おそらく、普通にループで抽出するしかないと思います。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2004-12-23 06:32
引用:

DBよりデータを取得する時点でインクリメントなID列を付加して、
DataTable.Select("Id < ○○ AND Id > ○○")
なんてすればよいのですが、SQLやストアドに手を入れる必要が出てきてしまうので、できれば、ADO.NET上で行ないたいのです。


データベースのテーブルにAutoIncrement型のフィールドを追加する代わりに
DataTableにAutoID(AutoIncrement属性)を追加すればどうでしょうか。

dc = New DataColumn("AutoID", GetType(Int32))
dc.AutoIncrement = True
dc.AutoIncrementSeed = intSeed
dc.AutoIncrementStep = 1
dt.Columns.Add(dc)
・・・
DataTable.Select("AutoID < ○○ AND AutoID > ○○")

_________________
ASP.NET+Accessサンプル集(Web Matrix版)

[ メッセージ編集済み 編集者: Access 編集日時 2004-12-23 06:35 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-23 06:49
 データベースから行に意味がある取り方をしておかないと意味がない、つまり、
DATA
----
AAAA
BBBB
CCCC
DDDD
と入っているとして、「SELECT DATA FROM テーブル」で返ってくる行の順序は必ず一致しているとは限らない。
という前提の元に、、、

 DataTable.Rows(n)でn行目のデータが取れますが、そういうことではなく?

http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=22302
マルチポスト?

_________________
よしきち
会議室デビュー日: 2004/06/11
投稿数: 6
投稿日時: 2004-12-24 09:20
Accessさま、Jittaさま、ありがとうございます。

まず、Jitta様への返答ですが、確かに通常のSelectでは順序は一致していないので、order by で取得しています。そして、DataTable.Rows(n)で取得することは確かに可能です。
が。ループでまわさないといけないので、出来れば、DataTableや、DataViewもしくは、DataRows()で取得できたらな・・と思っていました。

続いてAccessさまへ。たしかに、AutoIncrement属性のデータカラムを作成する方法を試してみていました、ですが、一度取得した(すでにデータの入っている)DataTableにカラムを追加したら、Nullが入ってしまいました。(そりゃそうか・・)
で、恐らく、DataTableが作成され→カラムを追加→データを格納の順番で処理を行なえば、IDが振られるであろうと思います。

今の時点で、DataTableは先に作成しておらず、アダプタよりFillしたときに、DataTable名を指定して、自動的に作成してもらっています。
これを先にDataSetを作成しておくように変更しなくてはなりませんね。
そうすれば私の思っている方法が可能かなと思っています。

確認出来しだい返信いたします。
1

スキルアップ/キャリアアップ(JOB@IT)