1. Estás tratando de obtener UN valor usando un conector ADO DB, que está generado para devolver una tabla o un registro. Esto es así porque usas un adaptador y el adqapador relaciona el dataset o el datatable con un origen de datos...
2. Si lo que tu quieres es el dato, no actualizarlo, o releerlo, sino el dato puro, lo que debes usar es SQL direcxto por medio de SqlCommand, siendo este objeto de la clase específica (de esser posible) de la base de datos que estés usando.
3. Los objetos SqlCommand (SqlCommand, OdbcCommand, OracleCommand, SqlLiteCommand, MysqlCommand, etc.), poseen un método denominado ExecuteReader cuyo fin es devolver un valor determinado cuando la sentencia SQL devuelve un y sólo un campo o valor. Así, una secuencia a aproximada sería:
Código:
Dim cxn as OdbcConnection(strConexion)
cxn.Open
Dim sSql as OdbcCommand("select max(codigo)from miTabla",cxn)
Dim valor as integer = sSql.ExecuteReader()
El uso de ExecuteNonQuery, devuelve el número de registros afectados, su ID o -1 si no se pudo realizar.
Usar cualquiera de los métodos de un XxxxCommand, implica controlar también las Exceptions que puedan producirse, ya que las mismas no serán absorbidas por el ADO.