- - PR -
ADO.NET DataTableよりデータの範囲抽出
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 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上で行ないたいのです。 お分かりになる方がいましたら、ご教授ください。 よろしくお願いします。 | ||||
|
投稿日時: 2004-12-22 16:45
おそらく、普通にループで抽出するしかないと思います。
| ||||
|
投稿日時: 2004-12-23 06:32
データベースのテーブルに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 ] | ||||
|
投稿日時: 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-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
