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

RowFilterでMaxを使いたいのですが?

環境/言語:[WindowsXP VB.net]
分類:[.NET]

こんばんわ。いつも参考にさせていただいております。
1ヶ月前からVB.NETでアプリケーション作成の勉強をしております

簡単ところで引っかかってしまいお手上げなので質問させていただきます

データビュでRowFilterを使ってあるテーブル"AAA"の"BBB"項目の最大値を
取得しようと思い下記の内容を書きましたが ??? 以下の部分が解らず
困っております。あまりにも素人質問で申し訳無いのですが,どなた様か
お知恵をお貸しください。
よろしくお願いします

dtV = New DataView()
dtV.Table = dsIM.Tables("AAA")
dtV.AllowDelete = True
dtV.AllowEdit = True
dtV.AllowNew = True
dtV.RowFilter = ???

A = dtV(0)("BBB")
MsgBox(A)
KAZUさん、こんばんわ〜

データセットのデータテーブルクラスにSelectメソッドがあるので
それで取得するのは駄目でしょうか?

Dim row() As DataRow
row = dsIM.Tables("AAA").Select("", "BBB DESC")

1.DataRowの配列を宣言
2.テーブル"AAA"の抽出条件=なし、ソート順番=BBBの大きい順

上記により、返されたrow配列の0番目”row(0)”に
項目”BBB”の最大値のレコードを取得できます。
FALさん、ありがとうございます
その手がありましたか
とりあえずソートして見ます。
しかし、ヘルプにはMax、Min、Count,Agvなど
使えるみたいなことを書いてあったのに
いまだに使い方が解りません
そのうち何処かで発見できるとうれしいです

ありがとうございました。
解決済み!
■No5253に返信(KAZUさんの記事)

 KAZUさん、こんばんは。深山と申します。
 既に用件は満たされたようなので不要かも知れませんけど(^_^;)、当初の疑問に対して
回答させて頂きます。

> dtV = New DataView()
> dtV.Table = dsIM.Tables("AAA")
> dtV.AllowDelete = True
> dtV.AllowEdit = True
> dtV.AllowNew = True
dtV.RowFilter = "BBB=Max(BBB)"
> A = dtV(0)("BBB")
> MsgBox(A)

 こんな感じで出来るかと思います。
 ただ、 DataView は表示の制御を行う為に使用するもの。最大値を求める為に使うのは
不適切かなぁという気はします。FALさんが提示された方法のが良さそうですね。

 で、蛇足になりますが DataTable.Select メソッドの抽出条件には RowFilter と同様のものが
指定可能です。なので、

row = dsIM.Tables("AAA").Select("BBB=Max(BBB)")

とすることで BBB が最大の行データだけ抽出することも出来ます。
 今後の参考までに。
深山さん、ありがとうございます。
まさか、こんなに早く私のモヤモヤが解消されるとは
思いませんでした。
私は、今まで(ほんの数ヶ月ですが)テーブルのデータを
検索するのは、DataViewだと思っておりました。(バカ野郎です)
DataRowでSelectを使うことを今知りました。FALさんすみません
理解してませんでした。本当に勉強になりました

みなさまありがとうございました
解決済み!

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