Subito prima di usare executereader prova a mettere:
msgbox cstr(Conn.State)
e vedi cosa ti restituisce. Se restituisce 1 vuol dire che è aperta. Nel caso in cui sia chiusa devi vedere dov'è che si chiude a tua insaputa.
Potresti anche fare un controllo sullo stato della connessione prima di usare executeReader con un if del genere:
Provacodice:if conn.State <> 1 ... conn.open ... end if
![]()