Beh il codice sembra corretto ma poi cosa popoli con il Dataset pieno??

Inoltre metti sempre il metodo Fill e simili in un blocco Try Catch e controlla con DS.Tables(0).Rows.Count ...