è perchè quando fai la query, poi hai delle istruzioni che assumono che tu abbia trovato almeno un record, istruzione del tipo

rs("campo")

invece devi inserirle in un if

if not rs.EOF then
rs("campo")

così se nessun record è stato trovato non esegue l'istruzione e non dà errore