I don't have a SQL server right now... but for me your VB code is ok...
What I don't understand is this line:
@dateassayrequested varchar(20)
Why do you VARCHAR instead of DATE?
Look here: http://msdn.microsoft.com/en-us/library/bb630352.aspx
Maybe is not important but anyway, I can...