C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: GridView削除時のAffectedRowsが-1


(過去ログ 100 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■59612 / inTopicNo.1)  GridView削除時のAffectedRowsが-1
  
□投稿者/ まっさ (45回)-(2011/06/02(Thu) 09:15:00)

分類:[ASP.NET (C#)] 

GridViewでストアドプロシージャを使用して
削除をしています。

データは正しく削除されて問題無いのですが、かならずe.AffectedRowsが-1になります。
これはどういう事がご存知の方はいませんか?

protected void SqlDataSource1_Deleted(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows < 1)
{
MsgLabel.Text = "エラー!";
}
}

ということで、上記ロジックだと、更新されてるのに「エラー!」となります。

よろしくお願い致します。

引用返信 編集キー/
■59655 / inTopicNo.2)  Re[1]: GridView削除時のAffectedRowsが-1
□投稿者/ クエール (1回)-(2011/06/02(Thu) 23:09:13)
No59612 (まっさ さん) に返信
> GridViewでストアドプロシージャを使用して
> 削除をしています。
>
> データは正しく削除されて問題無いのですが、かならずe.AffectedRowsが-1になります。
> これはどういう事がご存知の方はいませんか?

ストアドプロシージャを使用しているからじゃないですか?
ストアドプロシージャを使用せずに直接削除クエリを実行するとどうなりますか?
引用返信 編集キー/
■59680 / inTopicNo.3)  Re[2]: GridView削除時のAffectedRowsが-1
□投稿者/ まっさ (48回)-(2011/06/03(Fri) 15:29:00)
No59655 (クエール さん) に返信
> ■No59612 (まっさ さん) に返信
>>GridViewでストアドプロシージャを使用して
>>削除をしています。
>>
>>データは正しく削除されて問題無いのですが、かならずe.AffectedRowsが-1になります。
>>これはどういう事がご存知の方はいませんか?
>
> ストアドプロシージャを使用しているからじゃないですか?
> ストアドプロシージャを使用せずに直接削除クエリを実行するとどうなりますか?

ありがとうございます。
たしかに直接削除クエリを実行すると正しい値が取れました。

今回は、単純な削除クエリなのでOKなんですが、ストアドで組みたい時も多いんですが・・・

う〜ん、ストアドでは無理なんですかね?


引用返信 編集キー/
■59697 / inTopicNo.4)  Re[3]: GridView削除時のAffectedRowsが-1
□投稿者/ クエール (2回)-(2011/06/03(Fri) 18:33:26)
No59680 (まっさ さん) に返信
> 今回は、単純な削除クエリなのでOKなんですが、ストアドで組みたい時も多いんですが・・・
>
> う〜ん、ストアドでは無理なんですかね?

削除された件数がほしいのでしょうか?
そもそも、例えば、ストアド内に、テーブルAの該当レコードを削除して、テーブルBの関連レコードを削除して、
テーブルCを更新して...という処理を組んだ場合、e.AffectedRowsに何を設定すべきだと思いますか?
削除された件数がほしいのならば、あらかじめ削除対象件数をSELECT文で抽出した方が良くないですか?
(該当レコードがなければそもそも削除は実行する必要はないですし。)
引用返信 編集キー/
■59708 / inTopicNo.5)  Re[4]: GridView削除時のAffectedRowsが-1
□投稿者/ まっさ (50回)-(2011/06/03(Fri) 22:49:34)
No59697 (クエール さん) に返信
> ■No59680 (まっさ さん) に返信
>>今回は、単純な削除クエリなのでOKなんですが、ストアドで組みたい時も多いんですが・・・
>>
>>う〜ん、ストアドでは無理なんですかね?
>
> 削除された件数がほしいのでしょうか?
> そもそも、例えば、ストアド内に、テーブルAの該当レコードを削除して、テーブルBの関連レコードを削除して、
> テーブルCを更新して...という処理を組んだ場合、e.AffectedRowsに何を設定すべきだと思いますか?
> 削除された件数がほしいのならば、あらかじめ削除対象件数をSELECT文で抽出した方が良くないですか?
> (該当レコードがなければそもそも削除は実行する必要はないですし。)

あっいえ、今回の件は問題ありません。
たしかにストアドで複数デリートしたらどの件数かわかりませんね。
きっとストアドを利用した時に−1になるのが仕様なんでしょうね。

ありがとうございました!


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -