Yes. So?
BasicDetailGrid.DataSource = sDs.Tables(0)
index = BasicDetailGrid.CurrentRow.Index
If you are getting a "object not set to an instance" error on the second of these two lines I am not surprised. There is no current row. And won't be until the user has selected one. Which, since you haven't shown it to him / her yet, will be a while...
I would suggest that wherever you use
index
it would be better to both load it there (so that you get the latest version after any user input) and check it for validity before you use it, in case the user hasn't selected a row yet...