Microsoft Access 掲示板

サブフォームにデータがないとフォーム上でレコード削除の表示にならない

2 コメント
views
4 フォロー

いつも適切な回答頂き大変助かってます。
今回は特定のメイン/サブフォームでレコード削除が思うようにできないので困っております。
メインには見積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にしてもサブフォームにデータがないとフォーム上では削除されません。サブフォームにデータがある場合は全て削除された表示になります。メインテーブルを確認すると削除されています。
他のファイルのフォームにも同様のコードがあり、それはこうならないのです。この分だけがこうなるので不思議でなりません。アドバイス宜しくお願いします。

beginner
作成: 2024/10/29 (火) 10:45:17
通報 ...
1

他のファイルのフォームにも同様のコードがあり、それはこうならないのです。この分だけがこうなるので不思議でなりません。

そのフォームが破損しているのかもしれません。
一からメインフォームとサブフォームを作り直してみたらどうでなりますか。

2
beginner 2024/11/06 (水) 11:59:10 61dd6@72e67

hatenaさん ありがとうございます(連絡遅くなり失礼しました)。
フォーム再作しても状況変わらずでしたので、リレーションを見直しました。メインテーブルの顧客IDに色々設定しているのが間違えてました。顧客テーブルにするのが正解でした。メインフォームの入力用コンボボックスに対してリレーションしてしまってました。リレーションとルックアップを同じ様に考えてました。
正しく設定すると普通にレコード削除できました。
お世話になりました。