To je velmi jednoduché ... to znamená, že z vašeho dotazu nebyly vráceny žádné výsledky. Vždy musíte kódovat defenzivně a před pokusem o indexaci zkontrolovat, zda pole Rows obsahuje nějaké položky. Něco jako:
if (dt.Rows.Count > 0)
soptype = dt.Rows[0]["SOPTYPE"].ToString();
else
somethingWentWrong();