Dates (and times) often give problems in SQL statements. The most robust way of handling them is to pass them as parameters to SQL queries.
Change your query to
strSQL = "SELECT * from Engagements WHERE CardNum = @dblCardLookUpHold AND DivisionID = @dblDivFlag AND EngageDate = @EngageDate";
and add
cmd.Parameters.Add("@EngageDate", SqlDbType.DateTime).Value = EngageDate;
to your code.
You will also need to fix your existing parameter assignement statements - you need to include the
@ character as part of the parameter name:
cmd.Parameters.Add("@dblCardLookUpHold", SqlDbType.Float).Value = dblCardLookUpHold;
cmd.Parameters.Add("@dblDivFlag", SqlDbType.Float).Value = dblDivFlag;