Click to See Complete Forum and Search --> : Too many arguements


ASPSQLVB
01-09-2007, 01:21 PM
Gang,
Here is the error I am getting:
Procedure or Function NewExpiredCarpAngler has too many arguements specidied.
I understand what it means to have too many arguements...I just cant figure out where or why this is occurring. Everything looks good to me.

Here is the Command Object/Parameters and , Stored Procedure being used:

Set Comm1 = Server.CreateObject("ADODB.Command")

With Comm1
.ActiveConnection = Conn
.CommandText = "NewExpiredCarpAngler"
.CommandType = adCmdStoredProc
End With

'ADD THE TOP 3 ANGLERS TO THE NEW TABLES
Do Until RS3.EOF
'Dim param1
Comm1.Parameters.Append Comm1.CreateParameter("FishId",adInteger,adParamReturnValue,4)
Comm1.Parameters.Append Comm1.CreateParameter("@Bio",adVarChar,adParamInput,3000,RS3("Bio"))
Comm1.Parameters.Append Comm1.CreateParameter("@AnglerPhoto1",adVarChar,adParamInput,100,RS3("AnglerPhoto"))
Comm1.Parameters.Append Comm1.CreateParameter("@TeamName",adVarChar,adParamInput,50,RS3("TeamName"))
Comm1.Parameters.Append Comm1.CreateParameter("@PegNumber",adInteger,adParamInput,4,RS3("PegNumber"))
Comm1.Parameters.Append Comm1.CreateParameter("@FirstName",adVarChar,adParamInput,50,RS3("FirstName"))
Comm1.Parameters.Append Comm1.CreateParameter("@LastName",adVarChar,adParamInput,50,RS3("LastName"))
Comm1.Parameters.Append Comm1.CreateParameter("@State",adChar,adParamInput,10,RS3("State"))
Comm1.Parameters.Append Comm1.CreateParameter("@Country",advarChar,adParamInput,50,RS3("Country"))
Comm1.Parameters.Append Comm1.CreateParameter("@Sponsor",adVarChar,adParamInput,50,RS3("Sponsor"))
Comm1.Parameters.Append Comm1.CreateParameter("@SponsorWebAddress",adVarChar,adParamInput,50,RS3("SponsorWebAddress"))
Comm1.Parameters.Append Comm1.CreateParameter("@NameofEvent",advarChar,adParamInput,50,RS2("NameofEvent"))
Comm1.Parameters.Append Comm1.CreateParameter("@StartDate",adDate,adParamInput,8,RS2("StartDate"))
Comm1.Parameters.Append Comm1.CreateParameter("@LengthofEvent",adInteger,adParamInput,50,RS2("LengthofEvent"))
'Comm1.Parameters.Append Comm1.CreateParameter("@BigFish",adDecimal,adParamInput,9,RS3("BigFish"))
Dim param2
Set param2 = Comm1.CreateParameter("@BigFish",adDecimal,adParamInput,9,RS3("BigFish"))
param2.Precision = 10
param2.NumericScale = 2
param2.Value = RS3("BigFish")

Comm1.Parameters.Append param2
'Comm1.Parameters.Append Comm1.CreateParameter("@TotalWeight",adDecimal,adParamInput,9,RS3("TotalWeight"))
Dim param4
Set param4 = Comm1.CreateParameter("@TotalWeight",adDecimal,adParamInput,9,RS3("TotalWeight"))
param4.Precision = 10
param4.NumericScale = 2
param4.Value = RS3("TotalWeight")

Comm1.Parameters.Append param4
Comm1.Execute,,adExecuteNoRecords

PROCEDURE

CREATE PROCEDURE NewExpiredCarpAngler(@Bio varchar(3000),@AnglerPhoto1 varchar(100),@TeamName varchar(50),@PegNumber int,@FirstName varchar(50),@LastName varchar(50),@State char(10),@Country varchar(50),@Sponsor varchar(50),@SponsorWebAddress varchar(50),@NameofEvent varchar(50),@StartDate datetime,@LengthofEvent int,@BigFish decimal (9),@TotalWeight decimal (9))
as
Insert into ExpiredSingleTeam(Bio,AnglerPhoto1,TeamName,PegNumber,FirstName,LastName,State,Country,Sponsor,Spons orWebAddress,NameofEvent,StartDate,LengthofEvent,BigFish,TotalWeight)
Values(@Bio,@AnglerPhoto1,@TeamName,@PegNumber,@FirstName,@LastName,@State,@Country,@Sponsor,@Sponso rWebAddress,@NameofEvent,@StartDate,@LengthofEvent,@BigFish,@TotalWeight)

Return @@identity
GO

russell
01-09-2007, 10:07 PM
you're appending parameters inside of a do loop.

once that thing hits the 2nd iteration, you've just doubled your params...

should put the ADO code inside a function (or sub) and pass the values to it, creating and destroying the command object in that function.

also, i would use an output parameter, rather than a return value. and since you don't have namedParameters = true then the params need to be in the exact order the SP expects 'em. always safest to set to true.

to use an output param, modify SP

ALTER PROC NewExpiredCarpAngler
@Bio varchar(3000).
@AnglerPhoto1 varchar(100),
@TeamName varchar(50),
@PegNumber int,
@FirstName varchar(50),
@LastName varchar(50),
@State char(10),
@Country varchar(50),
@Sponsor varchar(50),
@SponsorWebAddress varchar(50),
@NameofEvent varchar(50),
@StartDate datetime,
@LengthofEvent int,
@BigFish decimal (9),
@TotalWeight decimal (9),
@FishId int output
AS

Insert ExpiredSingleTeam(
Bio, AnglerPhoto1, TeamName, PegNumber, FirstName, LastName,
State, Country, Sponsor, SponsorWebAddress, NameofEvent,
StartDate, LengthofEvent, BigFish, TotalWeight
)
Values(
@Bio, @AnglerPhoto1, @TeamName, @PegNumber, @FirstName, @LastName,
@State, @Country, @Sponsor, @SponsorWebAddress, @NameofEvent,
@StartDate, @LengthofEvent, @BigFish, @TotalWeight
)

SET @FishId @@identity
GO

this line
Comm1.Parameters.Append Comm1.CreateParameter("FishId",adInteger,adParamReturnValue,4)
becomes

Comm1.Parameters.Append Comm1.CreateParameter("@FishId",adInteger,adParamOutput,4, 0) and should be last.