Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

problema con tipo de dato int identity

Estas en el tema de problema con tipo de dato int identity en el foro de SQL Server en Foros del Web. Hola amigos foreros, en verdad necesito de su ayuda hace días que estoy tratando de insertar un dato desde un formulario windows utilizando un stored ...
  #1 (permalink)  
Antiguo 08/02/2007, 15:57
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta problema con tipo de dato int identity

Hola amigos foreros, en verdad necesito de su ayuda hace días que estoy tratando de insertar un dato desde un formulario windows utilizando un stored procedure, pero siempre me sale un error de que no se esta pasando el parametro al stored. La tabla es una tabla sencilla que maneja los siguientes campos:

create table factory
(
id int identity(1,1),
nombre varchar(40)

constraint pk_factory primary key(id)
)

el stored procedure es el siguiente:

CREATE PROCEDURE [dbo].[usp_insert]
(
@id int,
@nombre varchar(40)
)
AS

INSERT INTO factory
(nombre)
VALUES
(@nombre)

y el error que me sale es:

Procedure or Function 'sp_insert' expects parameter '@id', which was not supplied.


alguno de ustedes puede decirme donde es que esta el error o si es que hay algun tratamiento espacial para los tipos de datos int identity?

por fa recibo cualquier comentario

gracias
chao

pd. Estoy utlizando sql server 2005 y visual basic 2005

Última edición por ing_aprendiz; 08/02/2007 a las 16:08
  #2 (permalink)  
Antiguo 08/02/2007, 16:46
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: problema con tipo de dato int identity

Que tal inge.

Tu SP tiene dos parametros( @id int, @nombre varchar(40) ), entonces cuando llames a tu SP le tienes que pasar dos parametros, por ejemplo:
Código:
 sp_insert 0, 'inge_a'
Ahora bien, tu tabla tiene dos campos uno del tipo entero con la propiedad identity y el otro del tipo varchar, y cuando haces una inserción solo es necesario el campo del tipo varchar.

Entonces la solución más rápida es que cambies tu SP de la siguiente manera:

Código:
CREATE PROCEDURE [dbo].[sp_insert]
(
@nombre varchar(40)
)
AS

INSERT INTO factory
(nombre)
VALUES
(@nombre)
Prueba y veráz que funciona.

Saludos y suerte!!
  #3 (permalink)  
Antiguo 09/02/2007, 07:14
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta Re: problema con tipo de dato int identity

Hola Daniel gracias por tu respuesta. Ya probe lo que me dices y no funciona persiste el mismo error.

mira esta es la función donde pasamos los parametros al stored no se si es que esta mal o que el caso es que es ahí donde no funciona el programa.

Código:
Public Function AddFactory(ByVal Factory As DataSet) As Boolean
        Try
            MyBase.SQL = "insertar"
            MyBase.InitializeCommand()
            MyBase.AddParameter("@cCampo1", _
                SqlDbType.varchar, 10, _
            Factory.Tables("Prueba").Rows(0).Item("cCampo1"))
                     Command = New SqlClient.SqlCommand("insertar", conexion())
            Command.CommandType = CommandType.StoredProcedure
            AddFactory = ExecuteStoredProcedure()
        Catch ExceptionErr As Exception
            Throw New System.Exception(ExceptionErr.Message, _
            ExceptionErr.InnerException)
        End Try
    End Function
End Class
gracias por tu ayuda chao
  #4 (permalink)  
Antiguo 12/02/2007, 12:47
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Re: problema con tipo de dato int identity

Que tal Inge.

Creo que debes de checar, ambos el SP y el programa, porque por ejemplo, del código que nos muestras no se ve el nombre del SP ( sp_insert ) por ningún lado. Además como que esta muy enrededao el código.

En las FAQ's de .Net seguramente encuentras algun ejemplo de como ejecutar un SP.


Saludos y suerte!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:14.