Visual Basic - demasiados argumentos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

demasiados argumentos

Publicado por JOSE (3 intervenciones) el 09/11/2008 00:51:43
Hola mi problema es el siguiente:
tengo un procedimiento almacenado en SQL 2000 para agregar un nuevo registro desde una aplicacion en VB, bueno todos los campos deben pasarse como parametros al momento de que se inserta el nuevo registro, pero cuando ejecuto el comando para guardar el registro me sale un error "la funcion o procedimiento xxx tiene demasiados parametros ", he revisado la creacion de parametros en el procedimiento almacenado y todo esta bien en el codigo vb tambien lo he revisado todo esta bien no se que pasa ojala alguien pudiera ayudarme aqui adajunto el codigo:

Private Sub cmdgraba_Click()
Dim idcat As String
idcat = busca_idcategoria()
Dim pridpro As ADODB.Parameter
Dim prpro As ADODB.Parameter
Dim pridcat As ADODB.Parameter
Dim prum As ADODB.Parameter
Dim prct As ADODB.Parameter
Dim prpv As ADODB.Parameter
Dim prfech As ADODB.Parameter
Dim prst As ADODB.Parameter
If cmdgraba.Caption = "&Grabar" Then
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "Insertproducto_pa"
Set pridpro = Cmd.CreateParameter("idpro", adChar, adParamInput, 4, txtidprod.Text)
Set prpro = Cmd.CreateParameter("nompro", adVarChar, adParamInput, 25, txtprod.Text)
Set pridcat = Cmd.CreateParameter("idcat", adChar, adParamInput, 3, idcat)
Set prum = Cmd.CreateParameter("umedida", adVarChar, adParamInput, 15, cmbumed.Text)
Set prct = Cmd.CreateParameter("costo", adCurrency, adParamInput, , txtcosto.Text)
Set prpv = Cmd.CreateParameter("pvta", adCurrency, adParamInput, , txtpvta.Text)
Set prfech = Cmd.CreateParameter("fvence", adDate, adParamInput, , dtvence.Value)
Set prst = Cmd.CreateParameter("stock", adSmallInt, adParamInput, , txtstock.Text)
Cmd.Parameters.Append pridpro
Cmd.Parameters.Append prpro
Cmd.Parameters.Append pridcat
Cmd.Parameters.Append prum
Cmd.Parameters.Append prct
Cmd.Parameters.Append prpv
Cmd.Parameters.Append prfech
Cmd.Parameters.Append prst
Cmd.Execute
MsgBox "Grabacion correcta", vbInformation, "Grabar"
For n = 1 To 3
Cmd.Parameters.Delete (0)
Next n
Cn.Close
Set Cn = Nothing
mostrar

y aqui el procedimiento almacenado:

CREATE PROCEDURE InsertProducto_pa
@Idproduct char(4),
@nompro varchar(25),
@idcat char(3),
@Umedida varchar(15),
@Costo money,
@Pventa money,
@Fechavence datetime,
@Stock int

AS
INSERT INTO Producto
VALUES ( @Idproduct, @nompro, @idcat, @Umedida, @Costo, @Pventa, @Fechavence, @Stock)
GO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:demasiados argumentos

Publicado por Juan Esteban (19 intervenciones) el 12/11/2008 16:47:27
reemplaza tu procedimiento por este:

CREATE PROCEDURE InsertProducto_pa (
@Idproduct char(4),
@nompro varchar(25),
@idcat char(3),
@Umedida varchar(15),
@Costo money,
@Pventa money,
@Fechavence datetime,
@Stock int)

AS
BEGIN
INSERT INTO Producto
VALUES ( @Idproduct, @nompro, @idcat, @Umedida, @Costo, @Pventa, @Fechavence, @Stock)
END
GO

-- cuentame si funciono
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:demasiados argumentos

Publicado por oscar (1 intervención) el 21/09/2009 02:00:10
te cuento k tuve el mismo problema al consumir un stored procedure desde la aplicación ... lo resolví detectando que se había duplicado el stored procedure en el SQL Server (me imagino k por estar editándolo, lo grabé dos veces y quedó con el mismo nombre), entonces eliminé el k no me servía y LISTO!!

Me funcionó todo!

Saludos

Oscar MT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:demasiados argumentos

Publicado por Julio Cesar (1 intervención) el 01/09/2010 17:55:02
revisa el execute que tienes en visual basic tienes un campo de mas o esta alguno en desorden revisa que tut tipo de variables coincidan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

demasiados argumentos

Publicado por ALVARO A (1 intervención) el 26/09/2014 02:58:15
mira yo lo solucione de esta manera

1
2
3
4
5
6
7
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "dbo.procesoxxxx"
cmd.Parameters.Append cmd.CreateParameter("Id1", adDouble, adParamInput, 5, txtId1.Text)
cmd.Parameters.Append cmd.CreateParameter("Id2", adDouble, adParamInput,5,txtId2.Text)
cmd.Execute
cmd.Parameters.Refresh    ' AGREGAR ESTA LINEA Y LISTO   ya no mas problema
cmd.CommandType = adCmdText
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar