フォームから新規のレコードを追加したいのですが、上手く行きません。
また、追加後の後処理としてフォームを空にしたいです。
新規レコード保存でデバックが出ます。
VBA
1Private Sub cmdSaveandNew_Click() 2 '入力間違いがないか再確認を促すメッセージ 3 If MsgBox("入力漏れ、間違いはありませんか?" & vbCrLf & vbCrLf & "『OK』を選択した場合は、新規レコードが保存されます" & "『キャンセル』を選択した場合は、戻ります", _ 4 vbOKCancel + vbQuestion, "確認") = vbOK Then 5 6 '新規レコード保存 7 DoCmd.RunCommand acCmdSaveRecord 8 9 '入力クリア 10 Me.Undo 11 12 '新規レコードへ移動 13 DoCmd.GoToRecord , , acNewRec 14 15 Else 16 '追加されなかった事のメッセージ 17 MsgBox "追加をキャンセルしました" 18 19End If 20End Sub
連結フォームなら問題なさそうですけど、デバックではどのようなメッセージが出力されますか?
連結フォームで少し前には、ちゃんと動いていたのですが・・・
因みにエラーは、以下のメッセージが出ます。
実行時エラー"3058"
インデックスまたは主キーにNull値は使用できません。
連結された側の「インデックスまたは主キー」がセットされていないのでは?
少し前まで動いていたのなら、インデックスを追加したか?または主キーを変更したか?を調べて見ると良いかと
saziさん yoorwmさん
ありがとうございます。原因が分かりました。
誰かが連結された側の主キー(IDにしてました)のデータ型を変更していたようです。
もとのオートナンバー型に直したら、上手く行きました!
初歩的なエラーで申し訳ありません。
たいへん、助かりました!
誰かが変更したなら、その変更には理由があるかと思いますので、確認された方が良いですね。
(オートナンバーに戻すことで、別なところでエラーになったり)
質問は自己解決で解決済みにして下さい。
saziさん
確かにおっしゃる通りですね。確認してみます。
ありがとうございます。

回答1件
あなたの回答
tips
プレビュー