Principales respuestas
La funcion o el procedimiento tiene demaciados argumentos

Pregunta
-
Buenos Días, tengo un formulario con un Textbox en Visual Basic 2005 y tengo un procedimiento almacenado en SQL 2005, lo que quiero hacer es mandar llamar el store procedure por medio de un botón y que me muestre el resultado en el Textbox.
el problema que tengo es ala hora de mandarlo llamar y imprimir al Textbox, me dice que el procedimiento tiene demasiados argumentos.
aquí les pongo mi store procedure y mi código de Visual que uso para mandarlo llamar, haber si me dicen que estoy haciendo mal.
Gracias.
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[AyB_TOT_ALI] ( @Fecha AS VARCHAR(8), @Caja AS VARCHAR(6) = NULL ) AS --DECLARE @InicioMes AS VARCHAR(6) --SET @InicioMes = LEFT(@Fecha, 4) + '01' SELECT SUM(tot_alim) AS Total FROM TCADBHSB.dbo.hoting WHERE (fecha_ing = @Fecha) AND (caja_dep = ISNULL(@Caja, caja_dep))
aqui mando llamar desde el boton al store procedure y trato de llenar el TextBox
'asigno la cadena de conexion y la abrimos Using miconexion As New SqlConnection("Data Source=IST;Initial Catalog=COSTOS;Connection Timeout=2500;User ID=sa;Password=******;") miconexion.Open() Try 'asigno el procedimiento almacenado a la variable cmd y los parametros Dim cmd As New SqlCommand("AyB_TOT_ALI", miconexion) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@Fecha", CDate(dtpFecha.Text)) cmd.Parameters.AddWithValue("@Caja", TboxCaja.Text) Dim paramId As New SqlParameter("@result)", SqlDbType.Float) paramId.Direction = ParameterDirection.Output cmd.Parameters.Add(paramId) 'executamos la variable cmd.ExecuteNonQuery() 'mostramos en pantalla TboxResult.Text = CStr(cmd.Parameters("@result)").Value) Catch ex As Exception MsgBox(ex.Message) End Try End Using
Jaime Bustamante Alvarado
Respuestas
-
TextBox1.Text = GetTotalParamVaue()
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana- Marcado como respuesta J Bustamante miércoles, 23 de febrero de 2011 22:24
Todas las respuestas
-
hola
el tema es que has definido el parametro @result, pero este no esta declado en el SP
ALTER PROCEDURE [dbo].[AyB_TOT_ALI]
(
@Fecha AS VARCHAR(8),
@Caja AS VARCHAR(6) = NULL,
@result INT OUTPUT
)
ASa este parametro de salida debes ponerle el valor del camculo del SELECT
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Arthuro Zerda martes, 22 de febrero de 2011 17:21
-
-
Si lo tenia de esta forma tiene que funcionar
ALTER PROCEDURE [dbo].[AyB_TOT_ALI] -- Add the parameters for the stored procedure here @Fecha AS VARCHAR(8), @Caja AS VARCHAR(6) = NULL, @Result int OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SET @Result =(SELECT SUM(tot_alim) AS Total FROM TCADBHSB.dbo.hoting WHERE (fecha_ing = @Fecha) AND (caja_dep = ISNULL(@Caja, caja_dep))) END GO
y para obtener el valor del parametro haria algo como esto
Public Function GetTotalParamVaue(Fecha As String, Caja As String) As Integer If String.IsNullOrEmpty(FirstName) Then _ Throw New ArgumentException("FirstName cannot be null or an empty string.") If String.IsNullOrEmpty(LastName) Then _ Throw New ArgumentException("LastName cannot be null or an empty string.") If Fecha Is Nothing Then Fecha = String.Empty If Caja Is Nothing Then Caja = String.Empty Dim conn As SqlConnection = New SqlConnection(_connectionString) Dim cmd As SqlCommand = New SqlCommand("ProcedureName", conn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@Fecha", CDate(dtpFecha.Text)) // ojo como esta casteando el valor de este parametro a tipo Fecha en la tabla debe esta de esta tipo cmd.Parameters.AddWithValue("@Caja", TboxCaja.Text) Dim p As SqlParameter = cmd.Parameters.Add("@EmployeeID", SqlDbType.Int) p.Direction = ParameterDirection.Output Dim newEmployeeID As Integer = 0 Try conn.Open() cmd.ExecuteNonQuery() newEmployeeID = CInt(p.Value) Catch e As SqlException ' Handle exception. Finally conn.Close() End Try Return newEmployeeID End Function
Tambien podia crear una funcion que retorne el valor deseador y llamar esta funcion en el lugar que quiere que aparezca el valor retornado por la funcion, ejemplo
CREATE FUNCTION FunctioName ( -- Add the parameters for the function here @Fecha AS VARCHAR(8), @Caja AS VARCHAR(6) = NULL ) RETURNS FLOAT AS BEGIN -- Declare the return variable here DECLARE @ResultVar FLOAT -- Add the T-SQL statements to compute the return value here SELECT @ResultVar = (SELECT SUM(tot_alim) as Total FROM TCADBHSB.dbo.hoting WHERE (fecha_ing = @Fecha) AND (caja_dep = ISNULL(@Caja, caja_dep))) -- Return the result of the function RETURN @Result END GO
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana -
-
-
TextBox1.Text = GetTotalParamVaue()
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana- Marcado como respuesta J Bustamante miércoles, 23 de febrero de 2011 22:24
-