Accessでレコードの複製
Access2010を使用して入力フォームを作成しています。
メインフォームとサブフォームにそれぞれ顧客情報を表示させていて、
「複製」ボタンを押すと、
メインフォーム、サブフォームのレコードがコピーされるようにしています。
メインフォームの元テーブルはJIK
サブフォームの元テーブルはREN
です。
JIKおよびRENテーブルはほかからリンクさせているのですが、
これで「複製」ボタンを押すと、
"実行時エラー '3022': インデックス、主キー、またはリレーションシップで重複する値が生成されるためテーブルに要求した変更でした成功しました。フィールドまたは重複データが含まれている、インデックスを削除するフィールド内のデータを変更または重複するエントリを許可して、やり直してのインデックスを再定義します。このエラーは、レポートやレポートの生成に変更を保存するときに発生します。
が出てしまいます。
テーブルをインポートすると正常に動作します。
テーブルをリンクさせる場合、レコードの複製は不可能なのでしょうか?
VBAは以下のように記述してみました。
Private Sub コマンド10_Click()
On Error GoTo Err_コマンド10_Click
Dim Result As Integer
Result = MsgBox("このデータを複製しますか?", vbYesNo + vbDefaultButton2 + vbQuestion, "データの複製確認")
If Result = vbYes Then
Me!txtCopy事件ID = Me!事件ID
Dim stDocName As String
DoCmd.RunCommand acCmdSelectRecord 'カレントレコードの選択
DoCmd.RunCommand acCmdCopy '選択レコードのコピー
DoCmd.GoToRecord , , acNewRec '新規レコードに移動
DoEvents ' (必要に応じて)
DoCmd.RunCommand acCmdPasteAppend 'コピーレコードの追加貼り付け
DoCmd.SetWarnings False ' システムメッセージ非表示
stDocName = "追加クエリ"
DoCmd.OpenQuery stDocName, acNormal, acEdit
DoCmd.SetWarnings True ' システムメッセージ表示
' サブフォーム再クエリ
Me!SREN.Requery
' 追加したレコードに移動
DoCmd.GoToRecord , , acLast
Me.リスト31.Value = Me.リスト31.ItemData(0)
MsgBox ("データを複製しました")
Exit_コマンド10_Click:
Exit Sub
Err_コマンド10_Click:
MsgBox Err.Description
Resume Exit_コマンド10_Click
Else
MsgBox "データの複製をキャンセルしました"
End If
End Sub
追加クエリは以下のように作成してみました。
【追加クエリ】
INSERT INTO REN ( 事件ID, 氏名, フリガナ, ・・・ )
SELECT [Forms]![MAIN]![事件ID] AS 式1, REN.氏名, REN.[フリガナ], REN.報告書, ・・・
FROM REN
WHERE (((REN.事件ID)=[Forms]![MAIN]![txtCopy事件ID]));
補足
ご回答ありがとうございます。説明不足で質問の意図が伝わらなかったようですみません。フォームのデザインビュー上で、ツールボックスでコマンドボタンを選択し、コマンドボタンウィザード「レコードの操作」「レコードの複製」を選択して複製コマンドを作成しました。この場合、レコードが100まであるとして、レコード5を開いているときに複製コマンドをおすと、レコード5が新しいレコード101に複製されます。求めているものは、レコード5を開いているとき、複製コマンドを押すと、複製したいレコードを聞いてきて10と入力するとレコード10の内容がレコード5に複製されるというものです。よろしくお願いします。