すいません 編集途中で誤って送信してしまいました・・・
OS:Win2003 + VB6 + Oracle9.2.0.1.0 を使用しています。
下記のようなコードにて、不可思議?な現象が発生します。
SQL = "SELECT * FROM TestTable where TestID = '1'"
Set oraDS = oraDB.CreateDynaset(SQL, &H8) ''oipsr**ファイルを作らない(NoCache)
''抽出されるレコードは1件で、そのレコードのCodeというフィールドには
''AAAAという値が入っているとする
oraDS.edit
oraDS!code.Value = "DDDD"
''この時点では、oraDS!code.Value = "DDDD"
oraDS.Update
''このUpdateを実行すると、oraDS!code.Value は 'AAAA'に戻ってしまいます。
''しかし、実際のDBの中身は'DDDD'になっています。
oraDS.Close
Set oraDS = Nothing
この現象は、CreateDynasetオプションに、NoCacheを指定すると発生します。
(オプションに0を指定すると発生しないのですが・・・)
よって、アップデート後のダイナセットの値の参照が行えない(DDDDになっている
事を期待している)ので困っています。
訳あって、oipsr**ファイルを作りたくないので、CreateDynasetオプションには
NoCacheを指定したいのです。
この現象は回避できないのでしょうか?
トランザクションをCommitしていないだけでは?
oraDS.Update後に
oraDS.Refreshを入れてもダメだろうか?
no_name 様
KIM.J 様
回答ありがとうございます。
oraDS.Refreshで期待通りの結果が得られました。
何分まだ初心者なもので・・・
ありがとうございました。
ツイート | ![]() |