The error message could not be more clear:
There is no row at position 35.
Your code uses explicit row numbers;
date1 = Convert.ToDateTime(dt.Rows[0]["TimeStamp"]).ToString("dd-MM-yy");
date2 = Convert.ToDateTime(dt.Rows[7]["TimeStamp"]).ToString("dd-MM-yy");
date3 = Convert.ToDateTime(dt.Rows[14]["TimeStamp"]).ToString("dd-MM-yy");
date4 = Convert.ToDateTime(dt.Rows[21]["TimeStamp"]).ToString("dd-MM-yy");
date5 = Convert.ToDateTime(dt.Rows[28]["TimeStamp"]).ToString("dd-MM-yy");
date6 = Convert.ToDateTime(dt.Rows[35]["TimeStamp"]).ToString("dd-MM-yy");
date7 = Convert.ToDateTime(dt.Rows[42]["TimeStamp"]).ToString("dd-MM-yy");
without checking in any way that there are sufficient results returned to accommodate them: you need at least 43 rows returned in order for that to work.
Why don't you get them? We can't tell, because we have no access to your data or to your results.
Start by using the debugger to examine the actual results you get back from your query, and find out how many there are, and then check your data to see how many you were expecting.
Then add code to check you have the expected number of rows returned, and report a problem if not.
And do yourself a favour: stop using "magic numbers" to select your rows: it's not at all obvious why you want rows in sevens, but probably it's some kind of daily data and you want Sunday only or similar. But use something (a constant perhaps?) that reflects the usage, not 7, 14, 21, 28 , ... that tells nobody anything!