久しぶりにAccessを扱うためわからなくなってしまい、恐縮ですがご教示ください。
フォームから削除したいデータがあり、マクロで削除するボタンを作成したのですが削除がうまくいきません。(一瞬削除できても復活する)
直接テーブルから削除すれば削除することができます。
リレーションシップのせいかと思い、キーとなる案件NOに紐づいたところは「レコードの連鎖削除」までチェックを入れています。
削除クエリを使えばよかったでしたっけ…。ヒントをいただけると助かります。
通報 ...
マクロにも影響するかわからないけれど、エラーメッセージの表示設定はありになっていますか?
アクション クエリのメッセージを非表示にするには - Access - ヘルプの森
ご回答ありがとうございます。該当のチェックボックスにチェックは入っていません。
入れた方が良いということでしょうか?(別の場所で色々不要なメッセージが出て驚かせてしまうので外した記憶があります)
フォームは連結フォームでしょうか。非連結フォームでしょうか。
連結フォームなら、コマンドボタンのコントロールウィザードでレコード削除のマクロを作成すれば、
カレントレコードを削除できるはずです。
それでうまくいかないのなら、
フォームの構成、レコードソースのテーブル構成等、詳細な説明をしてください。
これで削除はできませんでした。(一旦できるのですが、更新すると復活する)
色々と入り組んでいてどこまで説明すれば良いのかわからないのですが
F_案件の元データがQ_案件で
キーとなる「案件NO」からQ_案件で
「T_案件リンク」と「Q_サブ保守」に結合しています。
その他キー以外の
「売区」から「T_売区」
「得意先ID」から「Q_得意先」に結合しています。
色んな所と繋がっているので、削除しても復活してしまうのかと考えています。
全体的にボリュームのあるデータなので全て説明するのが難しく
適当な情報をピックアップしてしまい申し訳ありません。
リレーションシップは昔組んでいたらうまく行かない所があって
中途半端に組んでしまっています。
全部のテーブルを入れて、きちんと組むべきでしょうか。
名前が変わってました…どんぐりず=風(質問者)です。
この修正について社内で後回しにしており、改めての質問になり申し訳ありません。
リレーションシップで、T_案件が「一対多」の「多」側になっていることがあります。そこで連鎖削除等の3つのチェックボックス全てにチェックを入れているのが問題でしょうか…?勝手な推測で失礼いたします。
エラーメッセージの表示設定を一時的にONにして、リレーションシップの連鎖削除が原因と出てくるか試してみましたか?(フォームで削除出来ないものが、テーブルで直接削除出来るとは考えにくいんですが、念のため確認して下さい。)
一時的にONして確認しましたが、エラーは出てきませんでした。
例えば、セルを編集してセにしたい。
セルのルを消したのに、うっかりESCキー押してしまい復活しちゃった。
これに近い事が起きていませんか?当て推量ですが、何某かのイベントが発動して、編集が確定されずにキャンセルされているとか。
フォームのレコードソースに、Q_案件 というクエリが設定されいるということですか。
このQ_案件を直接開いてレコード削除したときは、削除できますか。
また、データの更新はできますか。
結合することで、削除したものが復活するということはありえません。
結合や主キーの設定が間違っていると更新できない(当然削除もできない)クエリになることはあります。
ご回答ありがとうございます。
Q_案件にてレコード削除した際も同じ現象が起きました。
一度削除される(削除しますか?のポップアップ⇒はいで、レコードが見えなくなる)のあとに更新ボタンを押すと復活していました。
参考になるか分かりませんがACCESS+SharePointの環境で
テーブルのレコードを選んで削除→消える
選択クエリ(結合なしで抽出条件だけ)のレコードを選んで削除→クエリ上では消える、テーブルでは消えず、クエリを開きなおすとデータが消えていない
というのは経験したことがあります
深く検証する状況になかったのでこれ以上のことはわかりませんが、基本に立ち戻って最小構成のテスト用DBからどの状況でその現象が発生するのか確認したらいいと思いますよ
>> 9
>> 11
「選択クエリを直接開いて、レコードを1行手動で選択してDELETEした瞬間、一瞬画面がチラつき直ちに、削除したはずのレコードが復活した」という事ですが、「選択クエリを直接開いて、とあるレコードのフィールドを選択して値の変更を試した」結果は、どうなったのでしょう?慎重に確認するのであれば、クエリを直接開いてレコードを編集したら、テーブルも開いて確認します。
もうひとつ当て推量です。フォーム上に案件NO、売区、得意先IDなどのフィールドがあると思いますが、どれかに何かのイベントを設定していませんか?もし該当するものがあれば、フィールドに設定したイベントを全部offにしてみて下さい。
その上で、削除から一瞬で復活するか結果を教えて下さい。復活しなくなった場合、offにしたイベントのコードを保守義務に差し支えない範囲で、全部コピペして教えて下さい。
Q_案件 で一対多関係の多側のレコードのみ削除されて、一側のレコードは残っているということかも、と推測。
Q_案件 のSQLを提示してもらえますか。
本件について、他業務に圧迫されなかなか本腰を入れることができず、ご教示いただいていたのに
回答が遅くなってしまい申し訳ありません。上記の記載が核心をついている気がします。
SQLの情報が長く、関係ない情報も入っていてここに記載するのが少しためらってしまうのですが
右下の「ファイル送信フォーム」からお送りした場合、hatena様にだけ届くのでしょうか。
(ここにはアップされない)
お手数をおかけして申し訳ありません。
ファイル送信フォームは私だけにメールで届きます。
ここにアップされることはありません。
先日こちらのフォームからお送りしておりました。届いておりましたでしょうか。
ご回答はメールでいただけそうでしょうか。特に急ぎという訳ではありません、
届いたか不安だったため…ご連絡お待ちしておりますね!
届いています。ちょっと忙しかったので今、SQLを確認しました。
かなり複雑なSQLなので、それだけで原因を特定するのは難しいです。
症状の発生するファイルを送ってもらえたら、原因を特定できるかもしれません。(できないかもしれませんが)