Untested Code
You need to do a better job of verifying if the filter property of the form has anything. Strings can not accept Null. I believe if the Form's Filter is not on the Filter property will be Null. I suggest something like this.
Code:
Dim strSql As String, i As Integer
Dim myFilter As String
'initialize the string variable
myFilter = ""
If Me.FilterOn = True Then
'Concatenate a where clause to the SQL string
myFilter = " AND " & Me.Filter
End If
strSql = "SELECT * FROM tbl_Finals WHERE Final_Scoring Is NULL " & myFilter
Your ADO needs an Update. You need to include an Update line before your MoveNext.
rst.Update
rst.MoveNext
Another approcah is to use DAO and create a recordset clone. The recordset clone will be a copy of the form's recordset and include the filter property, if it exists.
Code:
Dim intCount As Integer
Dim intAnswer As Integer
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
'no need to verify EOF or Movelast with
'Recordset Clone when working within cloned form's module
intCount = rs.RecordCount
intAnswer = MsgBox("You are about to update " & intCount & " records." & vbCrLf & _
"Do you want to continue?", vbInformation + vbYesNo + vbDefaultButton2, "Confirm Update!")
If intAnswer = vbYes Then
rs.MoveFirst 'I believe you need this. If it errors, remove it
While rs.EOF = False
rs.Edit
If rs![Final_Scoring] = Null Or rs![Final_Scoring] = "" Then
rs![Final_Scoring] = Me.FinalScore.Value
End If
If rs![Comments] = Null Or rs![Comments] = "" Then
rs![Comments] = Me.FinalComments.Value
End If
rs.Update
rs.MoveNext
Wend
End If
A third option would be to execute an action query and concatenate the filter property into an UPDATE string. No need for ADO or DAO. You would include the Final Scoring and Comments criteria in the WHERE clause of the SQL string