Access (一般機能)

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

 
(Windows 10 Pro : Access 2021)
フォーム並べて表示
投稿日時: 23/07/27 17:03:35
投稿者: ぽっぺん

よろしくお願いします。
同一テーブルのフォームをサブフォームの中に並べて表示したいのですが
エラーが出て表示できません。
エラーを回避する方法があればご教授お願い致します。
 
1 新規入力フォームと前年職員貸与品フォームを表示
2 新規入力フォーム、開く時イベントにマクロでレコードの移動
  新しいレコード
3 オープニングフォームにボタンを配置、ボタンクリック時サブフォームを
  開く
4 オブジェクト新規入力フォームが開いていません。
  回避する方法がわかりません。
  
  よろしくお願いします。

回答
投稿日時: 23/07/28 10:06:53
投稿者: Suzu

新規入力フォームが、既に単独で開いている状態で、
オープニングフォームのサブフォームとして、同じ 新規入力フォームが設定されている
と言う事でしょうか?
(ボタンクリック時 と言っているので、
  サブフォームコントロール のコントロールソースとして、何かしらのフォームが指定してあって
  ボタンクリック時 に、新規入力フォーム に変更している?)
 
であれば、既に開いているフォームをサブフォームとして開く事はできません。
 
 
そうでないなら、エラーに内容を明記する様にしましょう。
メッセージが表示されるなら、その内容とエラー番号、
エラーメッセージが出ないなら、どんな状況となっていて、エラーと判断したのか

投稿日時: 23/07/31 07:04:56
投稿者: ぽっぺん

コメントありがとうございます。
 
*オブジェクト新規入力Fが閉じています。
 (直接または間接に)実行しているマクロに、GoTopRecord/レコードの移動、RepaintObject/オブジ   ェクトの選択アクションが含まれますがオブジェクト名、引数で指定したオブジェクトが閉じています。
 GoToRecord、RepaintObject,SelectObjectメソッドの引数で指定したオブジェクトが閉じています。
 マクロでフォームを開く、モジュールを開く、クエリを開くレポートを開くテーブルを開くなどのアクションを使うか、VisualBasicのDoCmdオブジェクトでこれらのアクションに対応するメソッドを使って、必要なオブジェクトを開いてください。
  OKを押します。
 マクロの停止、アクション名:レコードの移動、引数:2、新規入力F、新しいレコード:エラー番号2489
 
 マクロの停止を押しますとサブフォームは立ち上がり、新規入力フォームは白紙のような状態、前年職員貸与品フォームは正常に立ち上がります。
 
 新規入力Fの開く時マクロ(レコードの移動、新しいレコード)を削除しますとサブフォーム内のフォームは正常に立ち上がります。
 
  よろしくお願いします。
 
 
 

投稿日時: 23/07/31 07:07:25
投稿者: ぽっぺん

ぽっぺん さんの引用:
コメントありがとうございます。
 
*オブジェクト新規入力Fが閉じています。
 (直接または間接に)実行しているマクロに、GoTopRecord/レコードの移動、RepaintObject/オブジ   ェクトの選択アクションが含まれますがオブジェクト名、引数で指定したオブジェクトが閉じています。
 GoToRecord、RepaintObject,SelectObjectメソッドの引数で指定したオブジェクトが閉じています。
 マクロでフォームを開く、モジュールを開く、クエリを開くレポートを開くテーブルを開くなどのアクションを使うか、VisualBasicのDoCmdオブジェクトでこれらのアクションに対応するメソッドを使って、必要なオブジェクトを開いてください。
  OKを押します。
 マクロの停止、アクション名:レコードの移動、引数:2、新規入力F、新しいレコード:エラー番号2489
 
 マクロの停止を押しますとサブフォームは立ち上がり、新規入力フォームは白紙のような状態、前年職員貸与品フォームは正常に立ち上がります。
 
 新規入力Fの開く時マクロ(レコードの移動、新しいレコード)を削除しますとサブフォーム内のフォームは正常に立ち上がります。
 
  よろしくお願いします。
 
 
 

投稿日時: 23/07/31 07:09:33
投稿者: ぽっぺん

suzu様
すみませんお礼のまま送信しました。
お許しください。

回答
投稿日時: 23/07/31 17:55:58
投稿者: Suzu

エラーメッセージもですが、どちらかと言うと、
 

引用:
新規入力フォームが、既に単独で開いている状態で、
オープニングフォームのサブフォームとして、同じ 新規入力フォームが設定されている
と言う事でしょうか?

の方が知りたかったです。
 
ご説明頂いている各フォームの名称や、構成について明確な部分を知りたかったのです。
 
 
でも、
引用:
 新規入力Fの開く時マクロ(レコードの移動、新しいレコード)を削除しますとサブフォーム内のフォームは正常に立ち上がります。


引用:
2 新規入力フォーム、開く時イベントにマクロでレコードの移動
  新しいレコード

引用:
オブジェクト新規入力Fが閉じています。
 (直接または間接に)実行しているマクロに、GoTopRecord/レコードの移動、RepaintObject/オブジ   ェクトの選択アクションが含まれますがオブジェクト名、引数で指定したオブジェクトが閉じています。

 
の説明があったので
 
・フォーム「新規入力F」の開く時に、マクロ レコード移動、新しいレコードを 指定してある
  また、オブジェクト名に【新規入力F】が指定してある
   (場合に依っては、オブジェクトの種類に 【フォーム】も)
・あるフォーム内のサブフォームのオブジェクト として、【新規入力F】を指定してある
 
であると思われます。
 
フォームを、サブフォームとして呼び出す場合
その時のオブジェクト名に、元々の フォーム名だけをを指定すると、
 そのオブジェクトが見つからないとなります。
Ex
 クエリの抽出条件として、フォームのコントロールを指定する場合
     Forms![フォーム名]![コントロール名]
 
  クエリの抽出条件に、同じフォームではあるが、
 サブフォームととして埋め込まれているフォーム上のコントロールを指定する場合
     Forms![フォーム名]![サブフォームコントロール名].Form![コントロール名]
   とする必要があります。
 
業務効率の改善をAccessで実践!!
【Accessにおけるフォーム・レポートの参照方法】
https://www.latest-info-system.com/access%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%BB%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E5%8F%82%E7%85%A7%E6%96%B9%E6%B3%95/
 
 
オブジェクトを指定してもいいのですが
 
GoToRecord マクロ アクション
https://support.microsoft.com/ja-jp/office/gotorecord-%E3%83%9E%E3%82%AF%E3%83%AD-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3-8809e958-a9f9-4501-a52c-7ce716abe861
 
オブジェクトの種類 / オブジェクト名 は指定しなくとも良いです。
 
ただし、その場合、アクティブな オブジェクトに対して のレコード操作になります。
親フォームがアクティブの可能性もあります。
 
レコードの移動 の前に、コントロールを選択すれば良いので
新規入力F の イベントマクロは消して
 
親フォームの イベントで、
・サブフォームコントロールを選択
・サブフォームコントロール内のフォーム上のコントロールを指定
・レコードの移動
であれば、可能かと。
 
 
------------------------------------------------------
 
そのフォームは、新規レコードの入力のみで良いなら
 
フォームを開く時に新規レコードを表示させる
https://www.moug.net/tech/acopr/0090017.html
 
新規データの追加だけ可能なフォームを作成する
https://www.moug.net/tech/acopr/0100034.html
 
辺りも参考にどうぞ。

投稿日時: 23/08/05 13:48:17
投稿者: ぽっぺん

Suzu様
 
そのフォームは、新規レコードの入力のみで良いなら
  
フォームを開く時に新規レコードを表示させる
https://www.moug.net/tech/acopr/0090017.html
  
新規データの追加だけ可能なフォームを作成する
https://www.moug.net/tech/acopr/0100034.html
 
上記参考に利用させていただき無事解決しました。
スッキリしたフォームになりました。
ありがとうございました。
これからもよろしくお願いします。