tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: エラーになっても処理を続行させたい
投稿日: 2008/07/27(Sun) 13:04
投稿者魔界の仮面弁士
> Visual Basic のエラー処理をもう一度確認します。
具体的には、MSDN ヘルプファイルの下記の項目です。

[Visual Basic ドキュメント]
├[Visual Basic の使用方法]
│└[プログラミング ガイド]
│ └[Visual Basic を使ってできること]
│  └[コードのデバッグおよびエラー処理]☆
│   ├[エラーの処理方法]★
│   ├[エラー処理ルーチンの構成]★
│   ├[エラー処理ルーチンの階層]★
│   ├[エラーの生成]★
│   ├[インライン エラー処理]★
│   ├[エラーの集中処理]★
│   └[エラー処理の無効化]★
└[リファレンス]
 └[ランゲージ リファレンス]
  └[ステートメント]
   ├[I-P]
   │└[On Error ステートメント]★
   └[R-Z]
    └[Resume ステートメント]★


> 今回Loopの前に記述する必要があるように思えるのですが、
事前に記述するのは、エラートラップの指示(On Error GoTo 〜)だけです。
先にも書きましたように、エラー処理本体そのものは、
プロシージャ内であれば、どこに記述しても構いません。

> If分岐でエラーコード判定を行ったほうがすっきり書けますかね・・・?
エラー処理が発生する可能性がある部分を、別のプロシージャにしておくことで
処理手順を整理できる可能性があります。


で。今回のコードの場合、下記のような点についても見直しておくべきかと。

・そもそも、ループ中にどのようなエラーが発生することが想定されているのか。
 (エラーを事前に想定せず、無計画にトラップするのは避けるべきです)

・ループのたびに、バインド変数の削除と登録をやり直す必要は無いのでは、
 ループ前に登録、ループ中はValue の書き換えのみ、ループ後に削除、とか。

・各 SQL の内容は固定的なので、ループ中で再生成したり、一つの sSQL 変数を
 使いまわしてたりするのではなく、すべてループ前に用意しておいた方が良いのでは。

・objRst は編集しないのだから、DbCreateDynaset を 0& で呼ぶ必要は無いのでは。
 たとえば、12&(ORADYN_NOCACHE Or ORADYN_READONLY) とか。

・この処理をループ処理せずに実現できる方法は無いのか?
 たとえば、MERGE 命令などを用いて、より効率のよい記述をできないか。

・最後の RecordCount 処理を、SELECT COUNT(*) に修正すべき。
 今のコードだと、ABC 列の値を読み捨てる結果になるので、効率が悪いです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。