И правильно ругается, потому что ты пытаешься в цикле открыть rs2
sql = "Select * From Table1 where (county_code = 'mana' or county_code = 'sara') and dip = '" & txtdip.Text & "' order by id asc"
rs.Open sql, Conn
Counter = 0
Do Until rs.EOF
Counter = Counter + 1
prefix = rs("dlp")
serial = rs("dli")
sqlsold = "Select * From Table2 where Activity_date = 2004 "
rs2.Open sqlsold, Conn2
'Здесь происходит открытие rs2 при каждом проходе цикла что недопустимо, лучше получи 2 rs а потом сравнивай как хочешь
в смысле надо переделать получение данных из базы
rs.MoveNext
Loop
P.S. Попробуй подключиться к MSSQL через DataEnvironment и провайдера Microsoft OLE DB Provider for SQL Server. Это не по поводу твоего кода, просто лучше использовать родного провайдера данных
