You don't need to specify length for parameters of data type adInteger, and the value you have specified is also wrong (must be 4).
VB Code:
  1. .Parameters.Append .CreateParameter("@Setup_ID", adInteger, adParamInput, 18, cInt(id))

Leave this parameter empty like this:
.Parameters.Append .CreateParameter("@Setup_ID", adInteger, adParamInput, , cInt(id))[/Highlight]

The "multistep OLEDB" error is usually caused by wrong parameters, e.g. passing a string to a parameter expecting a numeric value, or by specifying a wrong value for length.