回答編集履歴

2

コード追記

2019/07/10 06:41

投稿

hatena19
hatena19

スコア33782

test CHANGED
@@ -57,3 +57,47 @@
57
57
  End With
58
58
 
59
59
  ```
60
+
61
+
62
+
63
+ ---
64
+
65
+ > マスタのフッターにある新規登録ボタンを押すと、新規にデータを登録するフォームが開きます。
66
+
67
+ > そのフォームで入力後、登録ボタンを押すと、マスタのサブフォームに追加されます。
68
+
69
+
70
+
71
+ という仕様なら、新規登録ボタンを押したときに、最後のレコードまで移動させてから、
72
+
73
+ 登録フォームを開き、登録フォームで登録後、閉じたときに、追加したレコードがカレントレコードになっているというのがユーザーフレンドリーな仕様だと思います。
74
+
75
+ マスターの新規登録ボタンのクリック時
76
+
77
+ ```vba
78
+
79
+ DoCmd.GoToRecord acActiveDataObject, , acLast
80
+
81
+ DoCmd.OpenForm "", WindowMode:=acDialog
82
+
83
+ ```
84
+
85
+ 登録フォームの登録ボタン
86
+
87
+ ```vba
88
+
89
+ ’登録処理省略
90
+
91
+ With Forms!F_CustomerMaster!Sub_CustomerMaster.Form
92
+
93
+ .Requery
94
+
95
+ .Recordset.FindFirst "ID=" & Me.ID
96
+
97
+ End With
98
+
99
+ DoCmd.Close acForm , Me.Name
100
+
101
+ ```
102
+
103
+ 主キーフィールド名が ID で、データ型が数値型の場合のコード例です。

1

コードの追記

2019/07/10 06:41

投稿

hatena19
hatena19

スコア33782

test CHANGED
@@ -27,3 +27,33 @@
27
27
 
28
28
 
29
29
  ちなみに、カレントレコード位置とスクロール位置は無関係です。上記はカレントレコード位置の保持です。スクロール位置を保持させたいという場合は、APIを必要としますので高度なスキルか必要になります。
30
+
31
+
32
+
33
+ ---
34
+
35
+ > Requeryする前のレコードの番号を取得して
36
+
37
+ > Requery後にそのレコード番号へ移動 
38
+
39
+
40
+
41
+ 上記のコード例
42
+
43
+
44
+
45
+ ```vba
46
+
47
+ With Forms!F_CustomerMaster!Sub_CustomerMaster
48
+
49
+ Dim AP As Long
50
+
51
+ AP = .Form.Recordset.AbsolutePosition
52
+
53
+ .Requery
54
+
55
+ .Form.Recordset.AbsolutePosition = AP
56
+
57
+ End With
58
+
59
+ ```