いつも適切な回答頂き大変助かってます。
今回は特定のメイン/サブフォームでレコード削除が思うようにできないので困っております。
メインには見積ID(オートナンバー)・日付・顧客ID等のフィールドがあり、サブには見積ID・明細ID(オートナンバー)・品目等のフィールドがあります。各所定のテーブル(クエリ)を基にしており、見積ID同士でリレーション(連鎖更新・削除設定)してます。
メインフォームに全削除ボタンがあり下記のコードを記述してます。
If IsNull(Me.[見積ID]) Then
Exit Sub
End If
If MsgBox("レコード削除を実行しますか?" & vbNewLine & "" & vbNewLine & _
"注意!!実行したら元には戻せません。", vbYesNo + vbDefaultButton2 + vbExclamation) = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
MsgBox ("削除が完了しました。")
Else
Exit Sub
End If
ボタンクリックするとメッセージは出るのですがYESにしてもサブフォームにデータがないとフォーム上では削除されません。サブフォームにデータがある場合は全て削除された表示になります。メインテーブルを確認すると削除されています。
他のファイルのフォームにも同様のコードがあり、それはこうならないのです。この分だけがこうなるので不思議でなりません。アドバイス宜しくお願いします。
そのフォームが破損しているのかもしれません。
一からメインフォームとサブフォームを作り直してみたらどうでなりますか。
hatenaさん ありがとうございます(連絡遅くなり失礼しました)。
フォーム再作しても状況変わらずでしたので、リレーションを見直しました。メインテーブルの顧客IDに色々設定しているのが間違えてました。顧客テーブルにするのが正解でした。メインフォームの入力用コンボボックスに対してリレーションしてしまってました。リレーションとルックアップを同じ様に考えてました。
正しく設定すると普通にレコード削除できました。
お世話になりました。