Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2007)
メインフォームとサブフォーム間移動の際のレコード保存について
投稿日時: 18/08/11 15:28:03
投稿者: あん

メインフォームにサブフォームを作成してあります。
メインフォームにテキストボックスに入力した後、サブフォームへコントロールを移動させるとメインフォームの入力が保存になります。
 
また、サブフォームのテキストボックスに入力した後、メインフォームへコントロールを移動させるとサブフォームの入力が保存になります。
 
「キャンセルボタン」として、コマンドボタンのクリック時イベントにundoをプログラムしてあります。
しかし、メインフォームからサブフォームへ移動してしまうとメインでのキャンセルができなくなります。(データが保存されてしまうため)
同様にサブからメインでも。
 
できるなら、メインフォームとサブフォーム間の移動をしても、キャンセルボタン(Undo)が効くようにできますか?
 
また、「入力完了ボタン」としてDoCmd.RunCommand acCmdSaveRecord(レコード保存)をプログラムしていますが、
メインからサブへ移動すると保存になってしまい、「入力完了ボタン」の意味がありません。
同様にサブからメインでも。
 
できるなら、メインフォームとサブフォーム間の移動をしても、保存にならず、入力完了ボタンにて保存が効くようにできますか?

回答
投稿日時: 18/08/13 15:37:16
投稿者: hatena
投稿者のウェブサイトに移動

メインサブフォーム/サブフォームは、一対多の関係のテーブルを編集するために設計されたものですので、メイン/サブ間を移動した場合は保存されるという仕様です。(保存されないと、参照整合性を保持できないので)
 
メインと連結しているテーブルとサブと連結しいるテーブルに関連性がないのなら、メインサブフォーム形式ではなく独立したフォームとして設計することになると思います。

回答
投稿日時: 18/08/13 22:12:42
投稿者: よろずや

メインフォーム/サブフォームは、ワークテーブルを基に作成し、
「入力完了ボタン」で本来のテーブルへ転記する形にすればよろしいかと。

投稿日時: 18/08/14 12:57:55
投稿者: あん

hatena様、よろずや様
 
回答ありがとうございます。
 
やはり、仕様で出来ないものなのですね。
 
ワークテーブルを作成する方法しかなさそうですね。
 
今日も暑いので、体調にはお気を付けくださいませ。
ありがとうございました。