##質問内容
管理システムを作成しているのですが、マスタのサブフォームのRequery後のレコードの位置を戻したいです。
##概要
マスタにサブフォームがあり、それが帳票になっています。
マスタのフッターにある新規登録ボタンを押すと、新規にデータを登録するフォームが開きます。
そのフォームで入力後、登録ボタンを押すと、マスタのサブフォームに追加されます。
この時にRequeryをしているためか、サブフォームの先頭のレコードに移動してしまうため、この時にレコードを新規登録する前の状態にしたいです。
例えば、サブフォーム内で一番下までスクロールした状態で、新規登録をした場合、サブフォームに新しく追加され、なお一番下までスクロールしてある状態にしたいです。
現状は、新規登録フォームで登録を押したときに
VBA
1Forms!F_CustomerMaster!Sub_CustomerMaster.Requery
のような文を加えてあります。
この手の問題は調べると関連した記事が多く出るのですが、いまいち理解できなかったためコチラで直接質問させていただきました。
##補足
(とある方の考え方を引用)
Requeryすると先頭のレコードへ移動してしまうので
Requeryする前のレコードの番号を取得して
Requery後にそのレコード番号へ移動
といった感じが私としては、イメージがつきやすかったです。
##追記
hatenaさんが提示してくださった感じで、追加後はサブフォームの帳票の方では、今追加したレコードをカレント?フォーカス?してある状況を作りたいです。
現状の登録フォームの登録コマンドボタンの処理です。
VBA
1'---------------------------- 2'登録・編集ボタン使用時 3'---------------------------- 4 5Private Sub Button_Add_Click() 6 7 Me.Requery 8 9 '背景色(白) 10 Me.Text_CustomerName.BackColor = 16777215 11 Me.Text_Address.BackColor = 16777215 12 13 '未入力エラー処理 背景色(赤) 14 If IsNull(Me.Text_CustomerName) Or IsNull(Me.Text_Address) Then '顧客名 15 If IsNull(Me.Text_CustomerName) Then 16 Me.Text_CustomerName.BackColor = 12695295 17 End If 18 If IsNull(Me.Text_Address) Then '住所 19 Me.Text_Address.BackColor = 12695295 20 End If 21 MsgBox "未入力の項目があります", vbOKOnly + vbExclamation, "未入力エラー" 22 Exit Sub 23 End If 24 25 '追加・編集処理分岐 26 27 Select Case Me.OpenArgs 28 29 '追加モード 30 Case "追加" 31 Call add_tables 32 Call del_tables 33 MsgBox "追加しました", vbOKOnly + vbInformation, "確認" 34 35 'マスタの更新 36 Dim a As String 37 a = IsNull(Me.Text_CustomerCode) 38 With Forms!F_CustomerMaster!Sub_CustomerMaster.Form 39 .Requery 40 .Recordset.FindFirst "F_CustomerCode = '" & 100 & "'" 41 End With 42 43 44 'レコード数をカウントする 45 TOTAL = DCount("F_CustomerCode", "T_Customer", "F_DeleteFlag = False") 46 Forms!F_CustomerMaster.Text_Num = TOTAL + "件" 47 48 '採番値を+1する 49 CurrentDb.Execute "UPDATE T_Num SET F_MgtCode = F_MgtCode +1 WHERE F_TableName = 'Customer'" 50 wFormat = DLookup("F_Format", "T_Num", "F_TableName = 'Customer'") 51 wMgtCode = DLookup("F_MgtCode", "T_Num", "F_TableName = 'Customer'") 52 Text_CustomerCode = Format(wMgtCode, wFormat) 53 54 '編集モード 55 Case "編集" 56 wEdit = MsgBox("編集してもよろしいですか?", vbYesNo + vbQuestion, "確認") 57 If wEdit = vbYes Then 58 Call edit_tables 59 MsgBox "編集しました", vbOKCancel + vbInformation, "確認" 60 Exit Sub 61 Else 62 Exit Sub 63 End If 64 End Select 65End Sub
↓こちらのサイトを参考にしてみましたが、
サブフォームだけで、レコード削除したときはこちらでできたのですが、
今回の場合はうまく使えなくて・・・
参考にしてみた記事
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/10 04:19
2019/07/10 04:43 編集
退会済みユーザー
2019/07/10 05:10
2019/07/10 05:27 編集
退会済みユーザー
2019/07/10 05:28
2019/07/10 05:32
退会済みユーザー
2019/07/10 05:49 編集
2019/07/10 06:23
2019/07/10 06:27
退会済みユーザー
2019/07/11 00:08
退会済みユーザー
2019/07/11 01:19
2019/07/11 02:07
退会済みユーザー
2019/07/11 02:32
2019/07/11 02:33
2019/07/11 03:38
2019/07/11 03:44
退会済みユーザー
2019/07/12 01:10 編集
2019/07/16 01:10
退会済みユーザー
2019/07/16 02:04
2019/07/16 02:09
退会済みユーザー
2019/07/16 02:20