[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/05/21(Mon) 17:05
投稿者名:マカロン
Eメール:
URL :
タイトル:
BeginTransステートメントについて
こんにちは。初めて投稿させていただきます。
VB6.0、Oracle10g、oo4o を使用しており、
BeginTransステートメントを使用してトランザクション制御をし、
ストアドプロシージャを呼び出す処理を行っています。

VB上で
「91:オブジェクト変数またはWithブロック変数が設定されていません」
のエラーが発生する問合せを受けており、
再現ができない状態で、原因が特定できません。
ロジックを確認するとメモリの解放等は行っているので、
このトランザクション制御が関係あるかと予想しています。

集中的に、複数ユーザーからこの処理にアクセスされるとエラーが発生するようなのですが
BeginTransステートメントを使用する場合、上限みたいのがあるのでしょうか?

処理の流れとしては
@:BeginTrans
A:CreateSqlでプロシージャAを呼び出す。
  A−1:正常終了時、CreateSqlで別プロシージャBを呼び出す。
   A−1−1:正常終了時、CreateSqlで別プロシージャBを呼び出す。
   A−1−2:異常終了時、Rollback
  A−2:異常終了時、Rollback

どなたかアドバイスをいただけましたら幸いです。
宜しくお願い致します。

投稿時間:2007/05/21(Mon) 18:12
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: BeginTransステートメントについて
> 「91:オブジェクト変数またはWithブロック変数が設定されていません」
オブジェクトが解放された後(またはオブジェクトの生成前)に、
そのオブジェクトのメンバ(メソッドやプロパティ)にアクセスしようとしていますね。

> 再現ができない状態で、原因が特定できません。
再現性が無いとなると、机上デバッグのみですか…キツイですね。
再現できるのであれば、Erl 関数などを使っての追跡が可能なのですが。

> ロジックを確認するとメモリの解放等は行っているので、
> このトランザクション制御が関係あるかと予想しています。
再現性がない時は、関係無さそうな部分さえも疑うぐらいの方が良いかも。

> 集中的に、複数ユーザーからこの処理にアクセスされるとエラーが発生するようなのですが
たとえば、何らかの理由によって(アクセス過多やロック制御等)、実行時エラーが発生していて、
しかもそれが On Error ステートメントで無視されており、かつ、Resume 処理に見落としが
あって、未生成状態のオブジェクトにアクセスしてしまうようなコードが実行されていた…とか。

> BeginTransステートメントを使用する場合、上限みたいのがあるのでしょうか?
この点に関してはわかりません。

投稿時間:2007/05/22(Tue) 14:29
投稿者名:マカロン
Eメール:
URL :
タイトル:
Re^2: BeginTransステートメントについて
魔界の仮面弁士さん、どうもありがとうございました。

よくよく調べたら、生成されていないオブジェクトを解放しようとしたときに
このエラーが出てました。

元々の問題はトランザクション制御の時のエラーなのですが
エラー発生時のロジックミスでした。

大変失礼しました。