
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
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


0