Access2003にて、メインフォーム上に設置した「コピー」ボタンをクリックすると、メインフォームとサブフォーム9個のレコードを一括で新規レコードにコピーするVBAを作成しています。
ですが、ボタンをクリックすると、
「3164
フィールドを更新できません」
とメッセージが表示されて、メインとサブ1だけがコピーされ、サブ2~9はコピーされません。
テーブルの構成は以下のようになっています。
メイン(テーブル名:00メイン)
・計画書番号(オートナンバー型)※主キー
・コピーフラグ(数値型)
・コピー実行日(日付型)
・作成フラグ(数値型)
・作成日(日付型)
※この他40程フィールドがあります。
サブ1~9(テーブル名:01~09サブ)
・計画書番号(長整数型)※インデックスは「はい(重複なし)」
・レコード作成用番号(長整数型)
※この他各サブテーブルごとに、20~40程のフィールドがあります。
サブ1~9の計画書番号はメインの計画書番号とリレーションシップしています。
サブフォームに計画書番号を表示するようにしてみると、コピーボタンをクリックしたときサブ2だけがメインで取得した新しい計画書番号が表示されていて、サブ2~9はコピー元の計画書番号が表示されています。
以下にコピーボタンをクリックした時のコードとBeforeUpdate時のコードを記載します。
また、「Forms!メイン!サブ1.Form.レコード作成用番号 = Me.txt計画書No」の箇所はメインの新規作成時にサブ1~9にレコードを作成するようにしています。
(メイン作成と同時にサブにもレコードを作成したかったので・・・)
サブ2~9までのコピーができるようにするにはどうしたらよいのでしょうか?
よろしくお願いいたします。
Private Sub cmdコピー_click()
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.GoToRecord , , acNewRec
DoCmd.RunCommand acCmdPasteAppend
Me!コピーフラグ = 1
Me!コピー実行日 = Date
Me!サブ1.SetFocus
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.GoToRecord , , acNewRec
DoCmd.RunCommand acCmdPasteAppend
Me!サブ2のサブフォーム.SetFocus
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.GoToRecord , , acNewRec
DoCmd.RunCommand acCmdPasteAppend
※以下サブ3~9までサブ2と同じコードを記述しています。
MsgBox "レコードのコピーが完了しました。"
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim dlgret As Integer
dlgret = MsgBox("編集内容を保存しましすか?", vbQuestion + vbOKCancel, "保存確認")
If dlgret = vbCancel Then
Cancel = True
Else
'新規作成の場合、作成日フラグは既定値0のため1に変更
If Me!作成フラグ = 0 Then
Me!作成フラグ = 1
Me!作成日 = Date
If Me!コピーフラグ = 1 Then
Forms!メイン!サブ1.Form.Requery
Forms!メイン!サブ2.Form.Requery
※サブ3~9も同様にRequeryを行ないます。
Else
MsgBox "コピーフラグは" & Forms!メイン!コピーフラグ & "です。" & Chr(13) & _
"新規作成を実行します。"""
Forms!メイン!サブ1.Form.レコード作成用番号 = Me.txt計画書No
Forms!メイン!サブ2.Form.レコード作成用番号 = Me.txt計画書No
※サブ3~9も同様に処理します。
End If
Else
End If
End Sub
No.1ベストアンサー
- 回答日時:
>Me!サブ2のサブフォーム.SetFocus
>DoCmd.RunCommand acCmdSelectRecord
>DoCmd.RunCommand acCmdCopy
>DoCmd.GoToRecord , , acNewRec
>DoCmd.RunCommand acCmdPasteAppend
ここに記載されている箇所でエラーが出ていますか?。
追加更新としているテーブルは、更新(追加)できる状態ですか?。
追加しようとしているレコードをコピーできていますか?。
空値にはなってないですか?。
こういうところから探ってみてはどうでしょうか?。
ご回答、ありがとうございます。
おっしゃられた内容を確認してみます。
マルチポストをしてしまったので、こちらでの質問は閉じさせていただきます。
せっかくのご回答いただき、誠に申し訳ございませんでした。
No.2
- 回答日時:
こちらが参考になるでしょう。
とイヤミを言ってみる。(笑)
あちらで Null さんの回答にあったことを
実行しているようには見えませんが。
いろいろやったとは言っても肝心なことをやらなくては
動くはずがないでしょう。
なお、Access に関してはあちらで継続された方が良いと思いますよ。
もちろん、こちらは閉じて。
マルチポストは嫌われますから、
きちんと処理しないと、
本来もらえるはずのレスがもらえなくなるかもしれません。
ご回答ありがとうございます。
AccessClubでのNull様のアドバイスは実行してみましたが、うまくできず、いろんな方法を試してみたところあのような内容になったのです。
ですが、もう一度トライしてみます。
マルチポストを行ってしまった点については、善意でお答えいただいた方々、運営元の方々などご迷惑お掛けしまして申し訳ございませんでした。
No.3
- 回答日時:
では、閉じられる前に
あの質問を見てから、もわ~んと考えていました。
情報が足らない様な気がします。
メインとサブは、リンク親子フィールドを設定しているとか、していないとか、
サブ側のレコードソースでは、条件としてメイン側を参照しているとか。
例えば、リンク親子フィールドに「計画書番号」が設定されていたとすると、
メインを新規にした時には、サブ側にはそれに相当するものが無いので空欄になり、
コピー自体ができなくなるのでは??
万が一、タイミング的にコピーができたとして確認が必要なのは、
サブ側コピーレコードの追加貼り付け時、どのタイミングでAccessさんが
メインの「計画書番号」を設定しにくるのか・・・・・
貼り付けた後で、上書きしてくれるのか???
貼り付ける直前で設定していて、貼り付けが上書きしてしまうのか???
サブ側のレコードソースで条件としてメイン側を参照しているので、
Requeryしない限りはレコードが存在する・・・・のであれば、
コピーレコードの追加貼り付け後、メイン側の「計画書番号」を参照し、
サブのテーブル用に設定する必要があると思います。
(貼り付けのままなら重複のエラーになりそうな?)
> Forms!メイン!サブ1.Form.レコード作成用番号 = Me.txt計画書No
の記述だけで新規作成されていることから、
リンク親子フィールドを「計画書番号」で設定しているようにも思えますが。
(サブ側の挿入前処理/更新前処理で設定していたりして・・・・)
あちらの方で、補足されたら良いと思います。
(日時が古いし、記述量も多いし・・・・等々)
※ タイミングの洗い出し、VBA記述の見直し等、頑張ってください。
> '内容を編集している場合、先に保存をさせる 部分の記述とか・・・
Me.Dirty = False で SaveRecord ??
> '新規作成の場合、作成日フラグは既定値0のため1に変更
> If Me!作成フラグ = 0 Then
メインをコピー貼り付けた時、既定値は関係なくなっていて????
なにも処理しないけど、それでOK???
メインのレコード確定は、Me!サブ1.SetFocus で起きる???
サブ1のレコード確定は、いつ起きる???
また、サブ9のレコード確定は、いつ起きる???
など、など。
Private Sub cmdコピー_click() の先頭行や、
Private Sub Form_BeforeUpdate(Cancel As Integer) の先頭行、
また、サブ側の更新前処理の先頭行に、ブレイクポイントを設定して、
ステップ実行で、その時その時の内容を確認された方が解決が早いかもしれません。
特に、どのタイミングで、レコードを確定しに行くのか・・・・とか。
以上 完
No.4
- 回答日時:
リレーションシップ定義はどうなってますか。
記述はよくても制約で更新できないケースでは?。
ほかにコピー時用テーブル用意して後で本体に追加クエリではダメでしょうか?。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- X(旧Twitter) Twitter(X)のアカウントの作り方 Twitterでサブ垢を作りたかったので、今まであったサブ 3 2023/08/28 08:08
- その他(パソコン・周辺機器) 2つのPCを行き来する 2 2022/06/15 01:59
- X(旧Twitter) web版 Twitter 3 2022/12/29 15:42
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- モニター・ディスプレイ マルチモニター・PC 2 2022/09/02 23:49
- Visual Basic(VBA) エクセルVBA 2 2022/04/27 13:29
- LTE microsoft authenticatorアプリ 3 2023/08/05 07:31
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Accessでレコードの複製
Access(アクセス)
-
access2000:フォームで入力した内容を新規レコードにコピー
その他(データベース)
-
メインフォームとサブフォームのレコードを複製
Access(アクセス)
-
-
4
MS.Access でサブフォーム付のフォームのレコードの複数コピーについて
Access(アクセス)
-
5
Access サブフォームでの選択行の取得
その他(データベース)
-
6
Access:サブフォームのレコードのコピー(複数)
Access(アクセス)
-
7
access 自動採番 年が変わるごとに0001に戻る仕組み。
その他(データベース)
-
8
ACCESSのサブフォームコピーについて
その他(Microsoft Office)
-
9
(ACCESS)条件に応じて、テキストボックスを表示・非表示設定
その他(データベース)
-
10
access2010 コマンドまたはアクション''は無効です。について
その他(ソフトウェア)
-
11
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
12
accessのレポートを20行固定にする方法
Access(アクセス)
-
13
帳票フォームでのあるコンボボックスに連動するコンボボックスの作成について
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
エクセルの貼り付け「リンクさ...
-
大学のレポート A4で1枚レポー...
-
エクセルでXLOOKUP関数...
-
会社PCのメールが更新されない
-
エクセルのシフト表を簡単にGoo...
-
Excelのセルの重複チェックが出...
-
outlookのメールが固まってしま...
-
エクセルでレーダーチャートの...
-
teams設定教えて下さい。 ①ビデ...
-
オフィス365のエクセル
-
Microsoft Edgeの「ニュースと...
-
Microsoft Office Personal 2021
-
Excelで空白以外の値がある列の...
-
Excel テーブル内の空白行の削除
-
マクロ自動コピペ 貼り付ける場...
-
Excel2019と365、2021
-
Outlook 2021 アカウント設定時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エミネム モッキンバードのP...
-
Win10にて、サブモニターにのみ...
-
36設定
-
サブPCの必要性について
-
「エリア88」サキと7人の仲間
-
イノセンスのこのシーンは中国...
-
これなんのキャラクターか分か...
-
CCNA サブインタフェースの「no...
-
ACCESS2013 VBA サブフォームか...
-
24 TWENTY FOUR シーズンI...
-
24 シーズン3 ジャック バ...
-
複数のUSBゲームパッドのPC側の...
-
解像度 1366×768 か 1280 × 8...
-
パソコン二台以上持ってる人は...
-
リュシウォンさんとチェジウさんの
-
Cerelon 1.7G CPUに合う安いmic...
-
韓国ドラマ キムレオン主演「...
-
NHKの朝ドラ、前作(らんま...
-
韓国ののりのようなものの名称
-
ACCESS97 サブフォームのレコー...
おすすめ情報