none
OLEDBConnectionについて RRS feed

  • 質問

  • 現在、OleDbConnectionでProviderに"Microsoft.Jet.OLEDB.4.0"を指定し、mdbファイルに接続するプログラムを作成しています。

    一連の処理としては下記の通りです。

    _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

    ループ開始

    →mdbへデータの有無を確認する

    →有の場合

    →データを取得して、それを基にテキストファイルを生成

    →テキストファイル生成後、取得したデータをmdbから削除

    →次のループ処理へ入る

    →無の場合

    →ループを抜ける

    ループ終了

    _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

    この処理を1件のデータが入ったmdbで実行すると、mdbからデータを削除した時点でデータは0件になる為
    ループを抜ける筈なのですが、削除が反映されるのが遅いせいなのか再度次のループに入り同じデータで
    テキストファイルを出力してしまうという現象が起きてしまいます。
    2件の同一ファイルを出力後はmdb内のデータも正常に削除され、ループを抜ける事が出来たのですが
    この際の削除処理というのはタイムラグが生じてしまうものなのでしょうか?
    それとも、削除処理が呼ばれた後にサブスレッドで動き、非同期通信のような事になるのでしょうか?

    開発初心者の為、原因がいまいち解析できません。

    どなたか御教授して頂ける方いらっしゃいますでしょうか?

    宜しくお願い致します。

    2011年1月25日 7:33

回答

  • 正確にはそれぞれの処理内容を見せていただかないことにはわかりません。

    基本的には処理が完了してからしか次のステップには進みません。なので「データの有無を確認」で確認結果が出る前に次に進んだり、「mdbから削除」で削除する前に次に進んだりはしません。

    可能性としては、

    • 「データの有無を確認」が何らかキャッシュされた情報を参照していて、実際のデータの有無が取得できていない
    • ループや分岐の判定が誤っていて、データが存在しないにもかかわらず進んでいる
    ぐらいかなぁ、とは思います。

     

    • 回答としてマーク 山本春海 2011年3月16日 5:37
    2011年1月25日 8:56