Normally what you would do is something like:
If rs.RecordCount <> 0 Then
'process only if there is data in the recordset
You say you are always getting RecordCount equaling -1, which means there is data in the recordset. Are there times when the code runs and throws an error because there is no data in the recordset (recordcount = 0)?
If you want to take the long way around, you could always do "SELECT Count(PKField) As PKCount FROM tblMyTable WHERE..." and then, if rs("PKCount") <> 0... then run the rest of the code.
What is the code that you are running that is causing problems with emptry recordsets?
Look it up at: http://wrox.books24x7.com