SSブログ

[ACCESS]レコード削除後、次のレコードにフォーカスをセットする。 [コンピューター]

明細行のレコードを削除すると、明細行の各フィールドが"#Deleted"と表示されたままになってしまいます。
これは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件の場合(それぞれ"削除レコード番号"と"レコード総数"が同一になる)はレコードを移動すると移動先が存在しないためエラーになってしまう。これを回避。
⑤削除レコード番号のレコード(削除したレコードの次のレコード)に移動。

ご参照ください。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました