• ベストアンサー
  • すぐに回答を!

VisualBasic6.0 SP3 (←注) Access97 で作成したプログラムでこんな問題が!?

  • 質問No.663915
  • 閲覧数289
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 36% (370/1012)

WindowsNT SP5
VisualBasic6.0 SP3
Access97

で作成したプログラムがあります。

Access97のMDB上にAテーブルとBテーブルがあるとします。

VB上で Aテーブルのデータを Bテーブルに
書き込むという処理をしています。
書き込む時に既にBテーブルに存在していた場合は、
そのレコードを削除して追加しています。

データを削除するという行為をしているのは、
その部分だけです。

今、どのような現象が起こっているかというと、
ACCESS97のMDBのテーブルのあるレコード
(ここでいう削除されるレコードが)

の全ての項目が
#Deleted  
となってしまっているのです。

テーブルを開いたまま、削除クエリーを流した
時などに表示されるようなあの画面です。
しかし、テーブルを開きなおしても、
#Deleted のままなんです。
MDBを開きなおしても、#Deletedの行が消えるわけでも
なく、そのまま残っています。

MDB自体が破損してしまっているようなのです。
修復を試みると、#Deletedの行は消えるのですが、
消えるだけです。
消えて、本来追加されるべきレコードがあればいいのですが、その部分だけが消えてしまうのです。

一体、いつのタイミングで #Deleted の行レコード
が作られるのか全く分かりません。

可能性がありそうなのは、そこの削除しているところ
だけなのですが、そこで必ず起こるというわけでも
ないようです。

サービスパックを最新にすれば治るとかいう手法は
できるだけ、とりたくないです。すでに納品されている
状態なので。

どなたか、似た現象に出会ったことがある方、
問題点、解決策、なんでもよいので手がかりでも
教えていただけないでしょうか?
とても困っています。

よろしくお願い致します。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 50% (1/2)

ACCESSファイルは修復最適化をしてもファイルに
ゴミが残り完全にクリーンな状態ではありません。
新しいmdbを作成してそちらにインポートしてみては
どうですか?
お礼コメント
GBSGBS

お礼率 36% (370/1012)

回答ありがとうございます。
そんな方法もあるのですね!試してみます!
投稿日時:2003/09/29 17:15

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 45% (18/40)

こんにちは。
ちょっと参考にならないかもですが…。

まずこの症状は、
いままで同じ事がうまくいっていたのに、突然こうなったという事でしょうか?
それともBテーブルのレコードを削除して…という処理は今回が初めて実行されたのでしょうか?

どちらにしても、#Deleted となるのは「レコードを削除します」というマーキングだけが行われ、実際には削除が実行されてないときの表示形態ですよね。

例えばVBAで、レコードの削除をADOのレコードセットで扱っているとしたら

Dim rs As New ADODB.RecordSet

rs.Delete'これで削除するためのマーキングだけ行われる
rs.Close'実際にこれで削除される

という事です。

レコードを追加する時も

rs.AddNew'これで追加の情報がセットされる
rs.Update'実際にこれで追加される

となりますから、アップデートがなんらかの原因でされてないとか。

当然クローズなどはされているかと思いますが、なんらかのエラーでClose処理がされないままでDBを終了したりしてこのような状態になってる可能性はどうかなぁとちょっと思いました。

今回はあまり関係ありませんかね…^^;
お礼コメント
GBSGBS

お礼率 36% (370/1012)

回答ありがとうございます!
いやいや、とても参考になりました。
投稿日時:2003/09/28 21:06
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ