Microsoft Access 掲示板

リレーショナルで連鎖削除すると、#DELETEDと表示される / 2

12 コメント
views
4 フォロー
2
ろでます 2020/07/15 (水) 01:00:47 61da2@be317

早々のご回答どうもありがとうございます。
ただ、この削除フォームは「ポップアップ」フォームで行っており、リンク親フィールド、凝フィールドの設定自体がなかったことから、仕方なく(?)以下のような形で削除フォームを組んでいます。

まず、親フォームの「個人ID」コンボボックスで個人ID選択すると、親フォームの4つのテキストボックスに
氏名・郵便番号・住所・年齢
が入るようにしています。

そして、その親フォーム上に「ユーザー情報変更」ボタンがあり、これにイベントプロシージャを割り当てて、ポップアップのフォームを上げています。

そして、そのポップアップフォームのロード時に
    Me.UC_個人ID = DLookup("個人ID", "基礎情報マスタ", "個人ID=" & [CMB_個人ID])
    Me.UC_氏名 = [Forms]![ポップアップ入力]![PF_氏名]
    Me.UC_郵便番号 = [Forms]![ポップアップ入力]![PF_郵便番号]
    Me.UC_住所 = [Forms]![ポップアップ入力]![PF_住所]
    Me.UC_年齢 = [Forms]![ポップアップ入力]![PF_年齢]
    Application.SetOption "Move After Enter", 0
    End Sub

(「CMB_個人ID」は、メインフォームで入れている個人IDのコンボボックスの値をグローバル変数として代入したものです。Me.UC_氏名・・・等は、このポップアップフォームのテキストボックスのコントロール名です)

というように、メインフォームから値を代入しています。
つまり、メインフォームで
「現在選択している個人IDのユーザー情報をポップアップのサブフォームのテキストのコントロールに代入している」
ということになります。
そして、以下のような削除プロシージャ―を作りました。

Private Sub ユーザー情報削除_Click()
    Dim strSQL As String
    MsgBox "登録情報を削除します"
    strSQL = "DELETE * FROM 基礎情報マスタ where 基礎情報マスタ.個人ID=" & UC_個人ID & ";"
    DoCmd.RunSQL (strSQL)
    Me.Requery
    Forms!ポップアップ入力.Requery
    DoCmd.Close acForm, "ユーザー情報編集フォーム", acSaveNo
End Sub
(ポップアップ入力がメインフォームの名前です)

ですので、カレントレコードは1つしかないような形です(レコードセレクタでは1つしかありませんでした)。
ですので、DoCmd.RunCommand acCmdDeleteRecordを実行すると、必ず1レコード目が削除されてしました。

また、ポップアップ型のフォームだと無理なのか、メインフォームにも、ポップアップをしたサブフォームにもRequery、Refreshをかけても、♯DELETEDは消えませんでした。

また、多分根本的な間違いを犯しているんでしょうね・・・。

長々と失礼いたしました。

すいません、読んでいただいてご教授いただけましたら助かります。

通報 ...
  • 3

    文章では状況かよくわからないので、右カラムのファイル送信フォームから現状のフォームを送信してもらえますか。

    たぶん、連結フォームの使い方が理解できていないのが原因だと思います。