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ベストアンサー
- 回答日時:
ACCESSファイルは修復最適化をしてもファイルに
ゴミが残り完全にクリーンな状態ではありません。
新しいmdbを作成してそちらにインポートしてみては
どうですか?
No.1
- 回答日時:
こんにちは。
ちょっと参考にならないかもですが…。
まずこの症状は、
いままで同じ事がうまくいっていたのに、突然こうなったという事でしょうか?
それともBテーブルのレコードを削除して…という処理は今回が初めて実行されたのでしょうか?
どちらにしても、#Deleted となるのは「レコードを削除します」というマーキングだけが行われ、実際には削除が実行されてないときの表示形態ですよね。
例えばVBAで、レコードの削除をADOのレコードセットで扱っているとしたら
Dim rs As New ADODB.RecordSet
…
rs.Delete'これで削除するためのマーキングだけ行われる
rs.Close'実際にこれで削除される
という事です。
レコードを追加する時も
rs.AddNew'これで追加の情報がセットされる
rs.Update'実際にこれで追加される
となりますから、アップデートがなんらかの原因でされてないとか。
当然クローズなどはされているかと思いますが、なんらかのエラーでClose処理がされないままでDBを終了したりしてこのような状態になってる可能性はどうかなぁとちょっと思いました。
今回はあまり関係ありませんかね…^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Set rst = db.OpenRecordset("S...
-
VB2005でAddNew()
-
access count数を変数に格納
-
Accessの更新前処理について。D...
-
Access VBAで自動連番を振るには
-
AceessVBA 非同期処理について
-
Excel 2019 のピボットテーブル...
-
Accessのリンクテーブルのパス...
-
ACCESSのクエリで集計で、先頭...
-
「直需」の意味を教えてください
-
Accessでテーブルの値をテキス...
-
エクセルVBAで5行目からオート...
-
accessのレポートで元になるテ...
-
複数のレコードを1つのレコード...
-
Oracle 2つのDate型の値の差を...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
空白をそのままインポートする...
-
【Access】フォームで自動計算...
-
Accessのフィールド数が255しか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
access count数を変数に格納
-
access2000でつまづいてます
-
ACCESSのFindコマンドが遅い
-
Accessの更新前処理について。D...
-
「更新に必要なキー列の情報が...
-
[Access]削除時のエラーメッセ...
-
Access VBAで自動連番を振るには
-
ADOでループすると1レコードず...
-
ACCESS 処理件数の取得
-
AceessVBA 非同期処理について
-
VBScript+SQLServerでcountがう...
-
Access VBA
-
AccessVBAについて
-
半角スペースの置換でエラーを...
-
cobolのカーソルについて
-
access vbaでクエリデータの中...
-
レコードのロックについて
-
Access2003でのテーブルの有無確認
-
linuxについて質問です
-
エクセルVBAで5行目からオート...
おすすめ情報