実現したいこと
Accessにて見積書を作成しています。
ボタンを押すことで入力した内容をコピーし、新規レコードにて登録するコードを作成しました。
メインフォームの内容はコピーされたのですが、サブフォームの内容がコピーできません。
どのように変更すればサブフォームの内容もコピーできるでしょうか?
発生している問題・分からないこと
下記のコードを実行することでメインフォームの内容はコピーをすることができ新規のフォームにて登録されていました。
しかし、登録されていたのはメインフォームのみでサブフォームに記載されていた内容は登録されていませんでした。
※下記のようにコピーしてもサブフォームに何も表示されない
該当のソースコード
・記入したコード・ Dim MaxNumber Dim MaxNumber2 If MsgBox("この見積をコピーしますか?", vbYesNo) = vbNo Then Exit Sub 'セーブ On Error Resume Next DoCmd.RunCommand acCmdSaveRecord On Error GoTo 0 '新規の番号を取得 MaxNumber = Nz(DMax("見積番号", "見積"), 0) + 1 'メインフォームをコピー CurrentDb.Execute _ "INSERT INTO 見積 (見積番号,製品要求事項確認書No,得意先コード,品名ID,作成日,作成者,見積提出日,見積提出者,営業利益率,販売価格,備考)" _ & " SELECT " & MaxNumber & " AS NewID,製品要求事項確認書No,得意先コード,品名ID,作成日,作成者,見積提出日,見積提出者,営業利益率,販売価格,備考" _ & " FROM 見積" _ & " WHERE 見積番号=" & 見積番号 '新規の見積加工IDの番号を取得 MaxNumber2 = Nz(DMax("見積加工ID", "見積加工"), 0) + 1 'サブフォームをコピー CurrentDb.Execute _ "INSERT INTO 見積加工 (見積加工ID,見積番号,工程コード,工数,分類名,順番)" _ & " SELECT " & MaxNumber2 & " AS NewID2," & MaxNumber & " AS NewID,工程コード,工数,分類名,順番" _ & " FROM 見積加工" _ & " WHERE 見積番号=" & 見積番号 'フォームに反映 Me.Requery DoCmd.SearchForRecord , , , "見積番号=" & MaxNumber
試したこと・調べたこと
上記の詳細・結果
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14263689889
コードは上記のサイトを参考に作成しました。
WHEREの部分が怪しいと思いコードを変えてみました。
CurrentDb.Execute _
"INSERT INTO 見積加工 (見積加工ID,見積番号,工程コード,工数,分類名,順番)" _
& " SELECT " & MaxNumber2 & " AS NewID2," & MaxNumber & " AS NewID,工程コード,工数,分類名,順番" _
& " FROM 見積加工" _
& " WHERE 見積加工ID=" & 見積加工ID
この場合、
コンパイルエラー
:変数が定義されていません
と表示されました。
メインフォームである「見積」の内容はコピーされていたのでサブフォームがコピーされていない。
実行自体はできるのでサブフォームをコピーする機能が動いていないと思うのですがどのように変更すればいいのかがわかりません。
補足
メインフォームの見積書
レコード内容:見積番号(主キー オートナンバー型 見積書作成時に自動作成),製品要求事項確認書No,得意先コード,品名ID,作成日,作成者,見積提出日,見積提出者,営業利益率,販売価格,備考
サブフォームの見積加工
レコード内容:見積加工ID(主キー オートナンバー型 加工作成時に自動作成),見積番号,工程コード,工数,分類名,順番
Microsoft Access 2021(.accdb)
データはSQL Serverにてリンク
SQL Serverで作成したテーブルを使っています。
0 コメント