Passing parameters from Access to an sp

I have the following stored procedure in a SQLServer db. The sp takes 3 parameters, one text and two dates.

CREATE PROCEDURE sp_DonationType_TotalAmount

@myDonationType varchar, @myBeginDate datetime, @myEndDate datetime

select Sum(a.Amount) as SumAmount
from tblDonationAllocations a inner join tblDonations d on a.DonationID = d.DonationID
where (a.DonationType = @myDonationType) and (d.DonationDate between @myBeginDate and @myEndDate)

I have an Access Project (.adp) front-end to the db and use VBA code to run the sp and create a recordset. The code that passes the parameters using a command object is:

Dim myBeginDate, myEndDate as Date
Dim myDonationType as String
Dim mySumAmount as Currency

myCmd.Parameters("@myBeginDate") = myBeginDate
myCmd.Parameters("@myEndDate") = myEndDate
myCmd.Parameters("@myDonationType") = myDonationType
Set myRs = myCmd.Execute
With myRs
   mySumAmount = !SumAmount
End With

The value passed as myDonationType is a string, eg "ADMIN" and the dates passed are entered via a Form like this: 3/12/02 (for December 3, 2002). This is UK format.

Can you please tell me what I have done wrong as I always get a data type error for the string parameter. Also the dates don't seem to work correctly; how do I fix that?

Who is Participating?
Guy Hengel [angelIII / a3]Connect With a Mentor Billing EngineerCommented:
Change the procedure header to this:

CREATE PROCEDURE sp_DonationType_TotalAmount

@myDonationType varchar(100), @myBeginDate datetime, @myEndDate datetime

The problem is that if you don't give a size for the varchar, it will be 1 by default... and thus any value you pass that is larger than 1 will raise that error...

For the dates values, you should declare your variable like this:
Dim myBeginDate as Date
dim myEndDate as Date
Your way the Begindate was declared as variant!

For the rest it should work, otherwise you can try to supply the date format like this yyyy/mm/dd ...

naqayyaAuthor Commented:
Thanks a million angelIII! Full marks!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.