総舐めにしなくても、FindBy メソッド使えばええんや!

前にも書いたように、.NET 系の言語(VBとC#)でデータセットを使ってほげほげという開発経験がないので、日々発見の毎日である(^^;
データセットのメソッドやプロパティを全て理解しているわけではないので、あるメソッドを使えば簡単に解決することを、ロジックでごにょごにょしたり、まあ、そういう無駄がまだ多い(^^;
今の仕事の契約が切れる頃にバッチリになりそうで若干申し訳ないなと思いつつ(^^;;;

データテーブルの中の何件かのレコードのフラグを変更する・・・なんて処理で、例えば keys() という配列に対象レコードのキーが入っているとして、

For i = 0 To dt.Count - 1
For j = 0 To keys.Length - 1
If dt(i).id = keys(j) Then
dt(i).chkFlg = 1
Exit For
End If
Next
Next

なんて多重ループにしてたんだけど、レコード数が増えたら遅くなるわなあ・・・と(^^;
実は、こんな風にループして総舐めにしなくても、ちゃんと更新対象を指定できるメソッドが DataSet クラスにはある。

FindBy だ。(ただし、データセットできちんと主キーの設定がされていないと使えない)

ちゃんと主キーとして指定されている項目でレコードを絞り込める環境であれば、

For j = 0 To keys.Length - 1
Dim row As DataSet.hogeRow
row = dt.FindByid(keys(j))
row.chkFlg = 1
Next

という感じで組める。
これならループが1個で随分処理がシンプルになる。

メソッド知らなくても、こまめにググればええやんという話だが、最初はその余裕すらなかったわ(^^;

<追記>
ちなみに、主キー設定がなければ、Select メソッドで対象レコードを絞り込めばよし。
ただ、結果が配列で返ってくるなど、若干動きは変わってくるが。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 総舐めにしなくても、FindBy メソッド使えばええんや!

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/3121

コメントする

このブログ記事について

このページは、shinodaが2014年9月23日 11:29に書いたブログ記事です。

ひとつ前のブログ記事は「ループしながらビューを Delete すんな!という話」です。

次のブログ記事は「煙火がなかなか上がらなくて焦りましたが」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら