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

Datasetについて

  • 題名: Datasetについて
  • 著者: 山男
  • 日時: 2005/03/25 20:58:28
  • ID: 10107
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[asp.net2003]
分類:[.NET]

こんにちは。
Datasetの中から条件に合う行を探したいのですが、
SQL文を使用し探し出したり更新したりすることはできますか?

tmpTable_forAppendNewColValue:比較用のキーと追加したい項目だけのDatatable
orgTable:新しい列の定義だけを追加済みの元のDatatable

For Each DataRow In DataRow2


Next

のように1行ずつ探していくしかないのでしょうか?
こんばんは。山男さん

> Datasetの中から条件に合う行を探したいのですが、

Datasetではなく、Datatableですか?
(
 質問者の、
 > SQL文を使用し探し出したり更新したりすることはできますか?
 より下が意味不明なので、何をしたいかよく分かりませんが・・・
)

DataSet自体には直接検索する機能はありませんね。

(既に読み込んだデータ中から)条件で絞り込んで取得するには、
所属するDataTableや、更にその下に属する行コレクションであるRowsで行います。
ようは、ひとつのテーブル(DatatableかDatatable.Rows行コレクションで。)での処理となります。
(=SQLで対象を指定するFROM句が固定されることになります。「dt_A」とか。)

●前者は、Selectメソッドです。
こちらでは、任意の検索を行える上、行の状態で絞り込んだり、ソートを指定したりできます。
SQLのSELECTの一部機能、といった感じですね。行の配列が返ってきます。
一番引数の多い、高機能なオーバーロードでは、例えば以下のようにします。
dim dr() as datarow=dt_a.select("id>='000010' and c='japan'","registdate desc",DataViewRowState.CurrentRows)
行状態で絞り込める機能はかなり有用です。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpref/html/frlrfsystemdatadatatableclassselecttopic.htm


●後者は、Datatable内の行コレクションであるRowsからの、Findメソッドで、1行だけが返ってきます。
キーが一致するものを検索することができます。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpref/html/frlrfsystemdatadatarowcollectionclassfindtopic.htm


(何か理由があれば別ですが、普通、前者のSelectメソッドを使うことになると思います。)


なお、更新に関してですが、行を特定して行の列に対して値を書き換えることになります。
複数の対象行を一括して更新、といったことはできません。
例えば、「update tablea set retouchdate='20050326' where c='japan'」のような処理と
同等のことを直接できるメソッドはありません。
自分で対象となる行をSelectメソッドで選択し、結果をfor each等でループして変更を行います。
  • 題名: Re[3]: Datasetについて
  • 著者: 山男
  • 日時: 2005/03/28 13:06:36
  • ID: 10131
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
解決の報告が遅くなり申し訳ありません。解決することができました。
解決済み!

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