- PR -

データセット内の特定列の最大値取得方法

1
投稿者投稿内容
Lem
会議室デビュー日: 2004/10/19
投稿数: 10
投稿日時: 2004-10-19 11:49
こんにちわ。
初めて投稿します。
よろしくお願いします。

データセット内に、以下のようなフィールドで構成される情報が入っています。
dataset1(T_person)
[ID][name][syozoku][age]

これらをWindowsフォーム上のテキストボックスに表示しているのですが、
新規に登録する際、名前を入力しEnter後に、IDを自動採番するために、
最大値を取得したいと考えています。

このような場合、C#からどのように[ID]列の最大値を取ればよいのでしょう?
Max関数あたりかとは思うのですが、その記述方法がわかりません。

よろしくお願いします。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-10-19 12:19
こんにちは。

DataSetと言うより処理の問題のような気がします。
データベースが何か分かりませんが・・。

僕なら登録処理時に採番します。Oracleならシーケンスとかで・・。表示が必要なら採番した時に退避しておいてそれを表示します。

登録前に表示する必要があれば一番最初だけはテーブルからIDの最大値を取得すればいいと思います。一瞬で終る処理だし、わざわざDataSetの中身を検索する必要もないと思いますよ^^

DataSetからも取得出来ると思いますが、上記の方法より手間がかかりますよ。
じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-10-19 12:27
SELECT MAX(ID) FROM DataTable でID列の最大値が取れますけど・・・・
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-10-19 12:30
DataTableのSelect()メソッドで取得は可能です。

td.Select("ID = MAX(ID)")

しかし、とっと様が言うように
排他などを考えるとDBで処理したほうがいいと思われます。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-10-19 13:04
引用:

じいじさんの書き込み (2004-10-19 12:27) より:
SELECT MAX(ID) FROM DataTable でID列の最大値が取れますけど・・・・



どうもです。
そのへんは普通のTableと同じで良いわけですね。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2004-10-19 15:57
こ、Compute、、、、

#dataTable.Compute("Max(ID)", null)をお忘れなく、、、
Lem
会議室デビュー日: 2004/10/19
投稿数: 10
投稿日時: 2004-10-19 23:15
質問だけして返答が送れ申し訳ありません。
午後はトラブルで参っておりました。^^;
まず、みなさん回答ありがとうございます。

>とっとさん
DBの種類を書かずすいません。SQLServerを使って(使われて?^^;)います。
書き方というか、僕の理解が足りないせいだと思いますが、
DataSet内の「T_person」テーブル内の[ID]列の最大値を取ろうかと考えていました。

仕組みを理解していないせいか、表現が難しいですね。

>じいじさん
明日試してみます。
SQLで普通に書けば良いわけですね。

>burton999さん
DataTableでの処理ですね。
こちらも試させていただきます。

>nanbuさん
Computeメソッドも初めて見ました。
こちらも、ヘルプを見てから試してみます。


今回初めてデータベースからの情報を使うプログラムを組むので、
右も左もわかりません。
こういう場合は、データベース側での処理を行うのが通常なのですね。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2004-10-19 23:51
データベースに同時アクセスされる可能性があるなら
最大値プラス1で採番する方法はあまりオススメできません。
1

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