Quando utilizzi il datareader per leggere i dati non puoi controllare se sono presenti i dati con la sintassi da te utilizzata. Nel tuo caso ti consiglio di cercare di inserirei questi dati nel Dropdownlist. Quindi controllare in questo se in esso sono presenti dei dati:
codice:
Dim objReader As OleDbDataReader
		
  objReader = objDatabase.SelectSQL("SELECT Menu FROM Menu WHERE Cat='"& Disciplina.items(Disciplina.SelectedIndex).Value &"' ")	
			
	'valore della dropdown list
	Categoria.DataValueField = "Menu" 
	'testo della dropdown list 
	Categoria.DataTextField = "Menu" 
	'esecuzione della query 
	Categoria.DataSource = objReader
	Categoria.DataBind()
if categoria.Items.Count=0 then
	lblmessage.text="ERRORE NELLA QUERY"
  end if
Nel Framework 1.1 è presente un attributo del datareader che dice se la query ha restituito dei risultati. Ma per adesso è inutile anche parlarne...
Ciao
'Alchimista'