Since you are using '?' as the parametrized query, you need to give all the parameters, even though if it is repeated. Thus one parameter value supply is missing.
If you use Shift = @Shift and so...in query.
and then
cmdUpdateCommand.Parameters.Add("@Shift", OleDbType.Char)...
this should work for you as Shift is the parameter that will be used twice and supplying value once would be enough.
For sample example, look here:
Using Parameterized Queries in ASP.Net[
^]