スポンサードリンク
[ACCESS]レコード削除後、次のレコードにフォーカスをセットする。 [コンピューター]
明細行のレコードを削除すると、明細行の各フィールドが"#Deleted"と表示されたままになってしまいます。
これはMe.Requeryでリクエリすれば消えるのですが、リクエリすると明細行のフォーカスが1行目に移動してしまいます。
数百行とかあったときにこういうオペレーションは嫌がられますね。
というわけで
レコード削除 → リクエリ → 削除したレコードの次レコードにフォーカスをセット
する方法は以下の通り。
①削除対象のレコード番号を取得。
②現在のレコードセットのレコード総数を取得。
③該当レコードを削除。
④削除対象のレコードが最終行または表示レコード総数が1件の場合(それぞれ"削除レコード番号"と"レコード総数"が同一になる)はレコードを移動すると移動先が存在しないためエラーになってしまう。これを回避。
⑤削除レコード番号のレコード(削除したレコードの次のレコード)に移動。
ご参照ください。
これはMe.Requeryでリクエリすれば消えるのですが、リクエリすると明細行のフォーカスが1行目に移動してしまいます。
数百行とかあったときにこういうオペレーションは嫌がられますね。
というわけで
レコード削除 → リクエリ → 削除したレコードの次レコードにフォーカスをセット
する方法は以下の通り。
Private SUB 削除BTN_Click()
Dim 削除レコード番号 As Integer
Dim レコード総数 As Integer
削除レコード番号 = CurrentRecord ' ①
レコード総数 = Recordset.RecordCount ' ②
DoCmd.RunSQL ("Delete From HOGE_TBL WHERE HOGE_CD = " & Me.HOGE_CD) ' ③
Me.Requery
If 削除レコード番号 <> レコード総数 Then ' ④
DoCmd.GoToRecord , , acGoTo, 削除レコード番号 ' ⑤
End If
End Sub
①削除対象のレコード番号を取得。
②現在のレコードセットのレコード総数を取得。
③該当レコードを削除。
④削除対象のレコードが最終行または表示レコード総数が1件の場合(それぞれ"削除レコード番号"と"レコード総数"が同一になる)はレコードを移動すると移動先が存在しないためエラーになってしまう。これを回避。
⑤削除レコード番号のレコード(削除したレコードの次のレコード)に移動。
ご参照ください。
コメント 0