OleDb parameters work on position, not name. The SortedList is indeed your problem. I'm guessing your DataLayer method iterates the items in the SortedList, creating parameters. If you put a breakpoint on the line that calls the method, you will see that your SortedList has, well, sorted itself alphabetically. If you want to pass an unknown number of parameter values to a generic method like this, just use simple arrays:
string[] p = new[] {"@e", "@b", "@f", "@a", "@d", "@c"};
object[] o = new[] (dv.e, dv.b, dv.f, dv.a, dv.d, dv.c };
DataLayer.ExecuteNonQuery(qry, p, o);
Then iterate the arrays to create an provide values ot the parameters.