- - PR -
行追加と行編集を同じ文で
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-28 13:17
DataRowCollection.Find は主キー値で検索するメソッドです。 LANVINさんは「DS.Tables("tbl").Rows(添字の変数)」と書いてますから、 指定された主キーの要素ではなく、 指定されたインデックスの要素が存在するかを 確認したいのだと思います。 ということで、単純に DS.Tables("tbl").Rows.Count と比較すればよいと思います。 | ||||||||||||||||
|
投稿日時: 2007-08-28 13:58
そうです。
「指定されたインデックスの要素が存在するかを 確認したいのだと思います。 」 の通りです。 そこでRows.Count と比較するということなのですが 行追加したらRows.Countをストアしてある変数に 1を足していき判断するのですよね。 そして編集はカウントはそのままで。 これが良いでしょうか? | ||||||||||||||||
|
投稿日時: 2007-08-28 15:00
とのことですから、 指定されたインデックスの行が存在すればその行のデータを更新、 なければ新しく行を追加してその行にデータを格納するという意味だと思いました。 これをそのままコードにして
でよいと思うのですが。 なぜ Rows.Count を変数にストアする必要があるのでしょうか? 後の質問は、DataTable に指定されたインデックスの行が存在するかどうかを 調べる方法を聞かれたのだと思いますし、それにはお答えしました。 そこから先は、ロジックの組み立て方の話だと思いますし、ご自分で考えられませんか? ロジックの組み立て方がわからないから質問するにしても、 どういう処理がしたくて、どういうコードを書いていて、 どこが上手くいかないかを具体的に書いてくれないとアドバイスできません。 いきなり 「Rows.Count をストアしてある変数」だとか、 「編集カウント」だとか言われても、何のことだかわかりません。 | ||||||||||||||||
|
投稿日時: 2007-08-28 15:47
KIさん、よく解りました。
最後までありがとうございました。 | ||||||||||||||||
|
投稿日時: 2007-08-28 15:59
細かいけど
の部分は「row.RowState」の値で判定したほうが良いと思います。 | ||||||||||||||||
|
投稿日時: 2007-08-28 18:25
このような方法が、最初の質問の答えとしてよいと思いました。
(KIさんの例示したコードの基本部分をお借りしました。) | ||||||||||||||||
|
投稿日時: 2007-08-29 06:57
いい加減、懲りてよ。(3度目)
回答者に超能力を要求しすぎ。そばにいない第三者にわかるように、書いて欲しい。 | ||||||||||||||||
|
投稿日時: 2007-08-29 09:08
おっしゃるとおりです。気が付きませんでした。 これなら追加の判定条件は1回書くだけでよくなりますね。 いずれにせよ、わかりにくいので、 後者のコードの方が好きですけど…
この方法も考えましたが、 設定する列にAllowDBNullがFalseの列が含まれる場合、 追加の場合にデータ設定前に Add してしまうと、 例外が発生すると思います。 |