Ignoring that the VB code won't even compile ...
Look at the error message:
The parameterized query '(@EmpName varchar(8000),@USDBasic money,@OtherUSDEarnings money,' expects the parameter '@EmpName', which was not supplied.
That is pretty explicit, and for an SQL error message it is pretty clear: it means that the
EmpName
you supplied was a NULL value, and the SP is set up specifically not to accept nulls. YOu could change the SP to allow nulls, but a better solution is to prevent the INSERT from happening at all if there is no such data.
We can't help you fix that - it's a design decision you need to take and which is very relevant to your DB design that we have no access to!