トップページ⇒tech
9コメント4KB

VBでトランザクション

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。NGNG
質問です。

フォーム1、フォーム2を作成し、
フォーム1でBeginTransをしてフォーム2を表示します。(MODAL)
フォーム2でインサートなりアップデートなりした後、
フォーム2ではCommitTransせずにフォーム2をアンロードし
フォーム1でCommitTransということは出来ますでしょうか?

試してみたのですが、Commitする時点でエラーが出てしまうのですが……。

ちなみにVB5でDBはオラクル8i使ってます。
変な仕様ですが、解決法はありますでしょうか……。
0002>1NGNG
スレッドたてる時は話が発展し易い内容にして欲しいですぅ
2レスで質問して欲しいですぅ

で、フォーム1にそういうプロシジャを用意してるんですか?
0003名無しさん@お腹いっぱい。NGNG
>1
エラーメッセージは?
00043NGNG
ちなみに

出来る出来ないで言うならできる。
やり方も間違ってはいない。

想像ではBeginTrans 後に Rollback or CommitTrans を
どこかで実行しているようなきがする。
そうすると2回目のCommitTransでエラーが出る。
0005名無しさん@お腹いっぱい。NGNG
>>2
すいません。もっと良く考えてからスレ立てれば良かったです。
ごめんなさい。
フォーム1でボタン2つ作って、1個はフォーム2呼び出し
もう1個はコミットボタンにしました。
Form LoadでBeginTransを宣言してます。

>>3
コミットボタンをRollBackにして試したところ、
「ロールバック時にアクティブなトランザクションがありません」
と表示されてしまいます。
どうも、フォームをアンロードした時点でコミットされてるよう
なんです……。
00063NGNG
セッションはグローバル変数だよね?
なら自動的にコミットされることはないきがするんだけどなぁ。

4に書いたことをチェックされてみては。
0007名無しさん@お腹いっぱい。NGNG
>>6
はい、グローバルです。
ソースもチェックしたのですが、途中でRollback or Commitしてる
所は見当たらないです……。
00083NGNG
フォーム2はアンロードしてる?
hideで終了してない?

hideで終了すると、2回目はForm_Loadが呼ばれないから
BeginTransが行われないよ。

当然BeginTransが行われないとエラーになるよ。
0009名無しさん@お腹いっぱい。NGNG
出来ました。すみませんでした。
原因が分かりました。
3さんのおっしゃっていたForm Loadを見ていたら、
フォーム1のForm LoadでBeginTrans
フォーム2のForm LoadでDB再接続
をやってしまっていました……(恥ずぃ)
再接続した後、CommitTransをいきなり宣言すれば、そりゃエラー
出ますよね(^^;
ありがとうございました。こんなケアレスミスを出さないよう精進
しようと思います。
3さん、ありがとうございました。
あと、こんな愚スレを立てて申し訳ありませんでした。
■ このスレッドは過去ログ倉庫に格納されています