Prova a dichiarare istanziare ed aprire la connection prima di usare la funzione executereader del command (non mi fiderei della condizione che hai messo if connection.state = closed.... e se non e' closed ma non e' neanche open che fa?).
Il codice
Dim dr As Odbc.OdbcDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
dr.Read()
MsgBox(dr("var")) 'così accedi al valore della variabile Var.
e' sbagliato. Non e' cosi che si legge un datareader. Per limitare uno degli errori che vedo (MsgBox(dr("var"))), ti consiglio di scrivere in cima alla pagina (prima di ogni cosa) OPTION STRICT ON .
Per leggere correttamente un datareader devi farlo dall'inizio alla fine anche se sai che c'e' un unico record. Quindi es.
codice:
Dim dr As Odbc.OdbcDataReader = cmd.ExecuteReader 
While dr.Read
   If Not IsDBNull(dr("var")) Then MsgBox(dr.GetString(dr("SEDE"))) 
End While
dr.Close()