Con TOP no creo que debas usar SetFilter... Es en la SELECT donde has de "filtrar" los 10 primeros que cumplan con la condición de la WHERE, y tal como le indiques en la instrucción ORDER BY.
Código:
SQL = "SELECT TOP 10 Campo1, Campo2... FROM TuTabla WHERE CampoX = '" & Text1.Text & "' ORDER BY CampoSelect"
Con estos valores se te presentarían los 10 primeros casos que cumplieran las condiciones establecidas. Y si asocias el DataGrid con ese Recordset, por mucho que lo refresques no te iba a presentar nada más que los 10 primeros casos.