1

以下のコードを使用すると、エラー 3021 が表示されることがあります。これは、レコードセットに 1 つのレコードがある場合にのみ発生します。原因と修正方法を教えてください。私はすべてを試したようです!

ありがとう

Private Sub cmdDelSelectedAction_Click()

response = MsgBox("Are you sure?", vbYesNo, "Confirmation required")
If response = vbNo Then Exit Sub

If Me.[Arrangement-Actions subform].Form.Recordset.EOF Then
    Me.[Arrangement-Actions subform].Form.Recordset.MovePrevious
End If

If Me.[Arrangement-Actions subform].Form.Recordset.BOF Then
    Me.[Arrangement-Actions subform].Form.Recordset.MoveNext
End If

Me.[Arrangement-Actions subform].Form.Recordset.Delete
Me.[Arrangement-Actions subform].Form.Recordset.MoveNext

End Sub
4

1 に答える 1

0

長くなりましたが、コードは次のようになると思います。

Private Sub cmdDelSelectedAction_Click()
  Dim rec As Recordset = Me.[Arrangement-Actions subform].Form.Recordset
  If Not rec.BOF Or Not rec.EOF Then
    If MsgBox("Are you sure?", vbYesNo, "Confirm") = vbYes Then
      rec.Delete
    End If
  End If
End Sub

コードでレコードを削除するかどうかを確認し、レコードを削除する前に、レコードセットに対して MoveNext または MovePrevious を実行するのは少し奇妙だと思います。エンドユーザーが予想とは異なるレコードを削除している可能性があるため、私はそれを避けます。

于 2013-08-06T19:48:29.310 に答える