Listing 3: The FilterDRS Subroutine Sub FilterDRS On Error Resume Next Err.Clear backupfilterstring = DRS.Filter ' ******* BEGIN CALLOUT A ******* FilterString = SearchStr.value ' ******* END CALLOUT A ******* ' ******* BEGIN CALLOUT B ******* If Trim(FilterString) <> "" Then DRS.Filter = FilterString DRS.MoveFirst Else MsgBox "Empty Filter String Ignored" SearchStr.value = DRS.Filter Exit Sub End If ' ******* END CALLOUT B ******* ' ******* BEGIN CALLOUT C ******* If DRS.EOF OR DRS.BOF OR Err.Number <> 0 Then MsgBox "Nothing Found for " & FilterString & " Resetting to previous filter string." DRS.Filter = backupfilterstring SearchStr.value = DRS.Filter Err.Clear Exit Sub End If ' ******* END CALLOUT C ******* TxtArea.Value = "" RecordString = "" ' ******* BEGIN CALLOUT D ******* Do Until DRS.EOF RecordString = RecordString & DRS.Fields.Item("User") & TabCount(DRS.Fields.Item("User")) RecordString = RecordString & DRS.Fields.Item("SIDType") & vbtab RecordString = RecordString & DRS.Fields.Item("SID") RecordString = RecordString & vbcrlf DRS.MoveNext Loop ' ******* END CALLOUT D ******* TxtArea.Value = RecordString NumberOfRecords.value = DRS.RecordCount & " Records" End Sub