Che io sappia, il supporto ai parametri con "segnaposto" (cioè con il nome) è dato dal "driver" ADO.NET di riferimento, quindi in alcuni casi è supportato (come avviene con SQL Server), per cui l'ordine non conta ma fa fede il nome del parametro, mentre in altri casi (come quello di Access) occorre usare "?" e fa fede l'ordine in cui sono specificati, che deve rispettare l'ordine in cui appaiono nello statement SQL.