Microsoft Access 掲示板

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

12 コメント
views
4 フォロー
9

とりあえずはそのファイルで状況は把握できます。

コンボボックスのリストに #DELETED が表示される現象の解決法は、コンボボックスを再クエリすればOKです。

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

ただし、致命的な欠陥かあります。
「ポップアップ入力」のコンボボックスで後の方のレコードを選択してからボタンクリックで「ユーザー情報編集フォーム」を表示させると、テーブルの先頭のレコードが、コンボボックスで選択したレコードで上書きされてしまいます。

「ユーザー情報編集フォーム」を開いた直後は先頭レコードが表示されます。ところが、読み込み時イベント Form_Load() で「ポップアップ入力」のデータで上書きしてしまってます。
Form_Load()のコードは削除してください。

それから、「ポップアップ入力」のコマンドボタンクリック時のコードを下記に変更してください。

Private Sub ユーザー情報変更_Click()
    If IsNull(PF_CMB_個人ID) Then
    MsgBox "編集する人間の個人IDを入れてください"
        Exit Sub
    End If
    DoCmd.OpenForm "ユーザー情報編集フォーム", , , "個人ID=" & Me.PF_CMB_個人ID.Value
End Sub

これで、"ユーザー情報編集フォーム" のレコードは、「ポップアップ入力」と同じものになります。

通報 ...