è 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