Questo è molto semplice ... significa che non sono stati restituiti risultati dalla tua query. Devi sempre codificare in modo difensivo e controllare se l'array Rows contiene elementi prima di provare a indicizzarlo. Qualcosa come:
if (dt.Rows.Count > 0)
soptype = dt.Rows[0]["SOPTYPE"].ToString();
else
somethingWentWrong();