teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード追記

2019/07/10 06:41

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -27,4 +27,26 @@
27
27
  .Requery
28
28
  .Form.Recordset.AbsolutePosition = AP
29
29
  End With
30
- ```
30
+ ```
31
+
32
+ ---
33
+ > マスタのフッターにある新規登録ボタンを押すと、新規にデータを登録するフォームが開きます。
34
+ > そのフォームで入力後、登録ボタンを押すと、マスタのサブフォームに追加されます。
35
+
36
+ という仕様なら、新規登録ボタンを押したときに、最後のレコードまで移動させてから、
37
+ 登録フォームを開き、登録フォームで登録後、閉じたときに、追加したレコードがカレントレコードになっているというのがユーザーフレンドリーな仕様だと思います。
38
+ マスターの新規登録ボタンのクリック時
39
+ ```vba
40
+ DoCmd.GoToRecord acActiveDataObject, , acLast
41
+ DoCmd.OpenForm "", WindowMode:=acDialog
42
+ ```
43
+ 登録フォームの登録ボタン
44
+ ```vba
45
+ ’登録処理省略
46
+ With Forms!F_CustomerMaster!Sub_CustomerMaster.Form
47
+ .Requery
48
+ .Recordset.FindFirst "ID=" & Me.ID
49
+ End With
50
+ DoCmd.Close acForm , Me.Name
51
+ ```
52
+ 主キーフィールド名が ID で、データ型が数値型の場合のコード例です。

1

コードの追記

2019/07/10 06:41

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -12,4 +12,19 @@
12
12
  この仕様変更になったときに、こりゃ便利だと話題になりました。
13
13
 
14
14
 
15
- ちなみに、カレントレコード位置とスクロール位置は無関係です。上記はカレントレコード位置の保持です。スクロール位置を保持させたいという場合は、APIを必要としますので高度なスキルか必要になります。
15
+ ちなみに、カレントレコード位置とスクロール位置は無関係です。上記はカレントレコード位置の保持です。スクロール位置を保持させたいという場合は、APIを必要としますので高度なスキルか必要になります。
16
+
17
+ ---
18
+ > Requeryする前のレコードの番号を取得して
19
+ > Requery後にそのレコード番号へ移動 
20
+
21
+ 上記のコード例
22
+
23
+ ```vba
24
+ With Forms!F_CustomerMaster!Sub_CustomerMaster
25
+ Dim AP As Long
26
+ AP = .Form.Recordset.AbsolutePosition
27
+ .Requery
28
+ .Form.Recordset.AbsolutePosition = AP
29
+ End With
30
+ ```