• ベストアンサー

アクセスデータ更新後、保存するとエラーがでる

サブフォームでデータ更新を行い、保存ボタンを押しメイン画面に戻り次の動作(なんでも)をすると添付ファイルのエラーメッセージが出てきてデータが更新されない。 VBAで何とかしたいのですが、ご助言の程、宜しくお願い致します。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。メインフォームが開かれているならば メインフォームのデータ更新をするというように 変更しておきます。 Private Sub 保存_Click() MsgBox "データを確定保存します" DoCmd.RunCommand acCmdSaveRecord If Not SysCmd(acSysCmdGetObjectState, acForm, "メインフォーム名") = 0 Then 'MsgBox "メインフォームの画面を更新します" With Forms!メインフォーム名 .Refresh End With End If End Sub もし、親フォームが閉じているならば開き直せば 当然ながらデータが更新された状態で開くことに なります。 なお、 MsgBox "メインフォームの画面を更新します" はコメントアウトしています。必要ならば はずしてみてください。

chi_ko6262
質問者

お礼

いつもいつも、ありがとうございます。まるで目の前で見ているような錯覚に陥りそうなぐらい完璧なものを提供いただき、本当にありがとうございます。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

前のスレッドの補足の続きになりますでしょうか? サブフォームで編集の対象にしたデータが 親フォームにも存在し、サブフォームで 編集後に親フォームにはその編集後の データが反映されていないために、 >メイン画面に戻り次の動作(なんでも)をする によって、質問のエラーがでたのだろう、と思います。 したがって、 親フォームを閉じない状態で、 1 サブフォームを閉じて親フォームに戻り、作業にとりかかる 2 サブフォームを閉じずに親フォームの作業にとりかかる によって、の違いはありますが、一番簡単なのはサブフォームの 保存ボタンを押すときについでに親フォームの表示データも 更新しておけば、 >サブフォームでデータ更新を行い、保存ボタンを押し >メイン画面に戻り次の動作(なんでも)をする という動作でエラーは出なくなります。そこで、 Private Sub 保存_Click() MsgBox "データを確定保存します" DoCmd.RunCommand acCmdSaveRecord With Forms!メインフォーム名 .Refresh End With End Sub のように、しておきます。

chi_ko6262
質問者

お礼

またもやお助けいただいてありがとうございます。これからは色々なバグを潰していく作業を行っていくつもりです。また質問するかも知れませんが、宜しくお願い致します。 本当にありがとうございます。。

回答No.1

>アクセスデータ更新後、保存するとエラーがでる。 >VBAで何とかしたいのですが・・・ それ以前にエラーが表示される原因を追放すべきです。 ・サブフォームでデータ更新を行い、  ↓ ・保存ボタンを押しメイン画面に戻り・・・ ここで、競合が発生していると思いますよ。

関連するQ&A

  • アクセスサブフォームで保存するとエラーとなる

    以前教えてもらった下記のサブフォームでのデータ保存VBAですが、このままだと添付ファイルのような画面が出てきてメインフォームでの保存が自動で出来ず、いろいろ試してみましたがうまくいきません。 何卒、ご指導宜しくお願い致します。 Private Sub 保存_Click() MsgBox "データを確定保存します" DoCmd.RunCommand acCmdSaveRecord If Not SysCmd(acSysCmdGetObjectState, acForm, "メインフォーム名") = 0 Then 'MsgBox "メインフォームの画面を更新します" With Forms!メインフォーム名 .Refresh End With End If End Sub

  • ACCESS 合計の更新

    Accessにて、メイン・サブ形式のフォームがあります。 サブフォームには、取引のデータを入力するように設定しています。 ●サブフォーム  日付 重量 ・・・  メインのフォームには、サブフォームの合計の重量を表示させています。 サブフォームにて、重量を入力したときに、合計を更新させたいのですが、 次のレコードに移るなどしないと更新されませんよね? そこで、次のマクロを試してみたのですがうまくいきませんでした。 マクロにて、コントロールの更新後に  ・再クエリ  ・最後のレコードに移動(サブフォームを指定)  ・コントロールの移動 結果は、サブフォームが開いていませんというエラーが表示されます。 重量の間違いをなくすためにも、重量を入力または、更新したときに、 合計の重量も更新したいので、どなたかご教授願います。

  • Access 更新キャンセルするには?

    Access2000で作成しています。 フォーム上でデータを書き換え後、更新をしない場合はどうしたらよいのでしょうか? 【希望する流れ】  1.データを変更  2.「更新」ボタンクリック     「データの更新をします。よろしいですか?」のメッセージ   (1)更新する場合:データを更新     「データが更新されました」のメッセージ   (2)更新しない場合:データを変更前に戻す     「データの更新がキャンセルされました」のメッセージ  3.フォームを閉じる  4.別のフォームを開く この動作をフォーム上にある「更新」ボタンのクリック時イベントにすることはできますか? とりあえず、現在は以下のようなものが作ってあります。 「VBA」  Private Sub Form_BeforeUpdate(Cancel As Integer)  '更新前確認   If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then   Cancel = True   Me.Undo   End If  End Sub 「更新」ボタンクリック時(こちらはマクロです)  ・フォームを閉じる  ・別のフォームを開く 今の状況では、更新する場合は問題ないのですが、更新しない場合、 「このレコードを保存することができません。  レコードを保存する時にエラーが発生しました。  ・・・・・・・・・・・」 というメッセージが出てきてしまいます。 どのようにVBAを作ればよいでしょうか? 説明不足の場合、補足いたします。よろしくお願いします。

  • Access2003 サブフォームについて

    サブフォームを持つ画面で 親子テーブルを共に更新しようとしていて挫折しかかっています。 そこで皆様の知恵を借りれれば幸いです。 <<画面表示>> メインフォーム…受注  ┗サブフォーム…受注明細 <<更新条件>> ・メインフォームは変更可能 ・サブフォームは追加、変更、削除可能 ・サブフォームのデータ変更時  →受注明細テーブルを更新しない ・メインフォームのデータ更新時  →受注テーブルを更新しない ・メインフォームの更新ボタン押下時  →受注テーブル、受注明細テーブルを更新 <<質問>> 1.サブフォームの値をテーブルへ  自動更新(項目変更時に付随更新)せずに  任意更新(ボタン押下時など)出来ますか?  [サブフォームに主キー項目を設置せず行追加すると Not Null制約で怒られます。] 2.VBで言うところのFlexGridの様にサブフォームを  制御出来ますか?  RecordSourceを使うのではなく、  VBA内で持っている値を各セルに設定する 3.そもそも同一画面内で親子テーブル共に更新することは  有り得ないことなんでしょうか?

  • サブフォームのデータを保存する方法

    VBAであるフォーム上のコマンドボタンで、別のフォーム上にデータを入力し保存をするのはどういうコードになるでしょうか。入力は出来るのですが、そのまま続いて保存する方法が分かりません。 またそのフォームにサブフォームが挿入されている場合、サブフォームのデータも保存するにはどうすればいいでしょうか。 よろしくお願いします。

  • アクセスでのデータ保存について。

    アクセスの登録画面で、ボタンをクリックしたときのみ保存したいのですが、×印を押して閉じても1つでもデータが入力されていたら、保存されてしまいます。保存というボタンをクリックして初めて、テーブルにデータが入っていくという風にはできないのでしょうか? tbl_商品・・・商品番号,商品名,更新日とあります。frm_商品・・・登録,修正,削除,参照,クリア,閉じるというコマンドボタンと商品番号,商品名,更新日のテキストボックスがあります。仕様としては、一画面で新規商品名入力やデータの修正、削除、商品一覧等が見れるようにしたいのです。frm_商品を開くときは、新規フォームだけが開けばいいのですが、入ってしまっているデータはやはり見れてしまうのでしょうか?参照をクリックすることでクエリを開かせて詳細情報が参照できるように作成したいのですが・・。

  • ACCESS2003 サブフォームのデータ

    こんにちは。宜しくお願い致します。 ACCESS2003でDBを作成しています。 メインフォームの中にサブフォームを作っています。 それぞれのID(オートナンバー)をリレーションシップとして設定し、連動しています。 メインフォームにデータを追加する際、サブフォームにデータを入力せずに、 次のメインフォームにデータを入れた場合、 サブフォームのオートナンバーが働かず、のちのちデータを入れた際にIDが違うため情報がずれてしまいます。 例えば、 メインフォームのID1~9のサブフォームには何も書き込まずメインフォームにだけデータを入力します。 その後、メインフォームのID10にあるサブフォームにデータを書き込むと、立ち上げなおしたときに、そのサブフォームへの入力したデータがID1のデータとして出てきてしまいます。 恐らく簡単なことだとは思うのですが、なにぶん初心者なものでさっぱり分かりません。 お分かりになる方、是非ともご教授お願いいたします。

  • Access VBAでメインフォームとサブフォームを印刷するには?

    現在Access VBAを使用して開発をしております。 (Accessのバージョンは2003です。) メインフォームとサブフォームから成る画面があります。 以下、フォーム内に配置されているコントロールです。 <メインフォーム> ・コンボボックス(DB非連結) ・検索ボタン ・画面印刷ボタン <サブフォーム> ・表形式フォーム(DB連結) 画面の機能としては、メインフォームの検索ボタンをクリックしたら、 メインフォームのコンボボックスで選択されているデータに 該当するデータをサブフォーム内に表示しています。 この状態で画面印刷ボタンをクリックしたら 印刷プレビュー画面を表示しています。 ●サブフォームのデータは印刷プレビューで表示されているのですが、 メインフォームのコンボボックスで選択されたデータが表示されなくて 困っております。 メインフォームのコンボボックスをサブフォーム内に配置すれば 印刷プレビューで表示できるようになるのかもしれませんが、 できればメインフォーム上に配置しておきたいのです。 何か良い方法をご存知の方、ご教授いただきたく思います。 よろしくお願いします。

  • ACCESS2000で更新ボタンを押すと、更新履歴を取れるようにしたいのです。

    履歴を取るときに、今は更新したら、履歴を残すようにしているのですが、更新ボタンたるものを作成して、そのボタンを押したら、履歴をとるということはできますでしょうか? 現在、メイン(フォーム)の中には、タブを作成し、1つめには、担当者情報(サブフォーム)と重要人物情報(サブフォーム)。2つめのタブにはには、・・・。3つめのタブには、・・。とタブをたくさん作っています。 どなたか、ご教授ください。よろしくお願い申し上げます。

  • Accessで、最後(更新)にエラーチェックをしたい。

    Accessで、最後(更新)にエラーチェックをしたい。 入門を見ながら、サブフォームのあるフォームを作りました。 エラーチェックのため、テーブルの入力規則を設定しました。 実際に使用が始まると・・・ サブフォームから入力したり、またサブフォームも、すべて入力が終わらないのに、 次の行に入力したりと、私の予想外の使い方をします。 そこで、入力規則をなくしました。(わがままが多いので) すると、記入漏れが発生しました。 そこで質問ですが、レコードの更新時に、フォームの必修項目のエラーチェックすることは可能でしょうか? よろしくお願いします。