Checking both .EOF and .BOF is a little more thorough, because there is never a situation in which that can arise except an empty recordset. So:
Code:
With rs
   .Open 'blah blah
   If .EOF And .BOF Then
       'It's empty
   Else
       'It isn't
   End If
End With
Also, .RecordCount isn't always accurate, depending on the CursorType you use.