conviene fare una query che fà tutto sul db.
Fare due query non ha senso.

per quanto riguarda il codice che hai postato, il problema secondo me è che probabilmente questo dr3[1]; è DBNull!!
metti un breakpoint in questa riga
DataArrivoPrevisto_d = Convert.ToDateTime(DataArrivoPrevisto);
e guarda il valore di dr3[1].