VB.NETです。
読み込んだデータセットを全件削除したいのですが、
DsCustomers1.Customers.Rows(0).Delete()
のように1行ずつをループさせながら削除する方法しか分かりません。
これですと処理が遅い気がします。
全件一括して削除する簡単なコードがありましたら
教えて頂けますでしょうか。
よろしくお願い致します。
データセット自体をDisposeして、また新たにNewすればダメ?
でしょうか・・・
以上。
>>処理が遅い気がします。
試してみた?
レスありがとうございます。
フォームオープン時に常に全件削除するような
コード(1レコード単位の削除)を入れているのですが、
開くまでに一瞬止まったような感じになっています。
教えて頂いた方法でやってみますね。
>フォームオープン時に常に全件削除するような
>コード(1レコード単位の削除)を入れているのですが、
>開くまでに一瞬止まったような感じになっています。
フォームオープン? Form_Load 時はフォーム上の
コントロールが全て作成されますので、多少遅いです。
データベースに繋いでいる場合は、初回、接続を確立する
部分のみで時間が掛かる事が多いです。正確に、どこで
時間が掛かっているか調べないと、何の解決にもならない
場合があります。
>読み込んだデータセットを全件削除したいのですが、
データセットは非接続型なので、提示されたコードでは
データベースの変更はしていない…という解釈で良かった
でしょうか?DataSet に Customers というプロパティは
ありません。
> ds.Tables("Customers").Rows(0).Delete()
と解釈して、その繰り返しなら
> ds.Tables("Customers").Rows.Clear()
でもいいかも?もちろんオショウさんの方法でもいいでしょうが。
…結局削除するなら読み込む必要さえ無いのですが…?
解決しました。ありがとうございました。
どう解決したのか書こうね。
問題の解決で恩恵を受けた人が、
問題・解決・参照リンクなどを簡潔に記述し、
まとめとして投稿しましょう。
情報を送ってくれた人たちへのお礼も大事ですけれど、
もっと大事なのは掲示板を支えている人々への情報のフィードバックです。
そうすれば同じようなトラブルが起きたときの助けとなります。
そしてまとめの掲示することによって、
あなたは、掲示板から恩恵を受ける(take)立場から、貢献する(give)立場に変わるのです。
ギブ・アンド・テイク(give & take)、これがコミュニティを支えます。
すみません、勘違いで解決していませんでした。
まず、共通クラス(データセットの中身まで取得するクラス)を使用
するのがプログラミング上のルールでしたので、
オショウさんの方法は使用することが出来ませんでした。
次に特攻隊長まるるうさんの方法
> dsSyohinList.Tables("T_商品リスト").Rows.Clear()
では削除してくれませんでした。
> dsSyohinList.T_商品リスト.Clear()
もダメでした。
解決したと思っておりましたが、よく見ると
1件ずつ削除(全件ループ)のコードが残っていた状態でしたので
すっかり出来たものと思っていました。
本当に申し訳ございません。
ArrayListの場合はClearコマンドで全件削除してくれるのに
データセットではダメなのでしょうか…
とりあえずDeleteコマンドをループさせておりますが、
もしお分かりでしたらご教授下さいませ。
よろしくお願い申し上げます。
DataRowCollection.Clear メソッドはローカルでテストした
限り、こちらでは何の問題もなく削除が実行されます。
>共通クラス(データセットの中身まで取得するクラス)を使用
が怪しいですが、こちらに伝わってる情報は何もありませんし、
再現するサンプルコードを示すか、もっと原因を追求した
情報がないとどうしようもありません。
先に言うと、自分、なんのこっちゃわかっておりませぬ・・・が、動きを考えるだけならそんなモノは関係ないので、案を出してみます
1:Clearで消す
2:しぶといヤツが残ってないかチェックする
3:しぶといヤツだけDeleteで消す
とかどうでしょう?
ツイート | ![]() |