• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access2003にて、メインフォーム上に設置した「コピー」ボタンを)

Access2003でメインフォーム上の「コピー」ボタンをクリックするとコピーが一部しかされない問題について

このQ&Aのポイント
  • Access2003のメインフォーム上に設置した「コピー」ボタンをクリックすると、メインフォームとサブフォーム9個のレコードを一括で新規レコードにコピーするVBAを作成しています。しかし、ボタンをクリックすると一部のレコードしかコピーされず、サブ2~9のレコードはコピーされません。
  • テーブルの構成は、メインテーブルに計画書番号とコピーフラグなどのフィールドがあり、サブテーブルに計画書番号とレコード作成用番号などのフィールドがあります。サブテーブルの計画書番号はメインテーブルの計画書番号とリレーションシップしています。
  • コピーボタンをクリックした際に実行されるコードやBeforeUpdate時のコードには、レコードのコピーと更新が行われる処理が記述されています。また、新規作成時にはサブテーブルにもレコードを作成する処理が含まれています。問題の原因として、サブ2~9のコピーがされない理由が考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

>Me!サブ2のサブフォーム.SetFocus >DoCmd.RunCommand acCmdSelectRecord >DoCmd.RunCommand acCmdCopy >DoCmd.GoToRecord , , acNewRec >DoCmd.RunCommand acCmdPasteAppend ここに記載されている箇所でエラーが出ていますか?。 追加更新としているテーブルは、更新(追加)できる状態ですか?。 追加しようとしているレコードをコピーできていますか?。 空値にはなってないですか?。 こういうところから探ってみてはどうでしょうか?。

nkhall
質問者

お礼

ご回答、ありがとうございます。 おっしゃられた内容を確認してみます。 マルチポストをしてしまったので、こちらでの質問は閉じさせていただきます。 せっかくのご回答いただき、誠に申し訳ございませんでした。

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

リレーションシップ定義はどうなってますか。 記述はよくても制約で更新できないケースでは?。 ほかにコピー時用テーブル用意して後で本体に追加クエリではダメでしょうか?。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答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) の先頭行、 また、サブ側の更新前処理の先頭行に、ブレイクポイントを設定して、 ステップ実行で、その時その時の内容を確認された方が解決が早いかもしれません。 特に、どのタイミングで、レコードを確定しに行くのか・・・・とか。 以上 完

nkhall
質問者

お礼

ご回答ありがとうございます。 詳しくご説明いただきました点をこれからじっくりみてみます。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

http://www.accessclub.jp/bbs/wforum.cgi?mode=allread&no=77233&page=0 こちらが参考になるでしょう。 とイヤミを言ってみる。(笑) あちらで Null さんの回答にあったことを 実行しているようには見えませんが。 いろいろやったとは言っても肝心なことをやらなくては 動くはずがないでしょう。 なお、Access に関してはあちらで継続された方が良いと思いますよ。 もちろん、こちらは閉じて。 マルチポストは嫌われますから、 きちんと処理しないと、 本来もらえるはずのレスがもらえなくなるかもしれません。

nkhall
質問者

お礼

ご回答ありがとうございます。 AccessClubでのNull様のアドバイスは実行してみましたが、うまくできず、いろんな方法を試してみたところあのような内容になったのです。 ですが、もう一度トライしてみます。 マルチポストを行ってしまった点については、善意でお答えいただいた方々、運営元の方々などご迷惑お掛けしまして申し訳ございませんでした。

関連するQ&A