none
Error al convertir el valor del parametro de string a int32 RRS feed

  • Pregunta

  • Hola amigos buenas noches un favor grande tengo este código con el cual trato de ingresar un proveedor me diante un procedimiento almacenado en sql server 2008 r2, en el linea

    da.SelectCommand.Parameters.Add(

    "@Descripcion", SqlDbType.NVarChar, 30).Value = Me.DescripcionTextBox.Text

    me devuelve error no ingresa el dato digo no ingresa porque paso el mouse por las otras lineas y visualizo los datos que ingrese en mi formulario pero en este no

    el campo lo cambie a combobox antes de arrastrar la tabla al formulario

    Tal vez con esta imagen sea suficiente.

    por favor deme una idea como puedo hacer tal vez en vez de .text tenga que colocar otra termino

    Gracias

    Roberto Melgar

    domingo, 4 de marzo de 2012 0:14

Respuestas

  • pero ese valor excede a un integer

    porque no usas un long ? o sea un Convert.ToInt64()

    es mas el mensaje lo deja bien claro al problema

    recuerda cambiar tambien esto en la db porque seria un bigint el tipo de dato para ese campo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Roberto Melgar domingo, 4 de marzo de 2012 18:38
    domingo, 4 de marzo de 2012 18:33

Todas las respuestas

  • Muestre la especificación de los parámetros del procedimiento almacenado y luego verifique que el control llamado "DescripcionTextBox" existe y es el que usted realmente espera que sea.  Porque sospecho que este es el nombre del control viejo y no del nuevo combo box.

    Jose R. MCP

    domingo, 4 de marzo de 2012 6:50
  • hola

    algo que noto es que no haces

    da.SelectCommand.Parameters.Add("@IdNit", SqlDb.DbType.Int, 0).Value = Me.IdProveedorTextBox.Text

    pero si ese parametros lo defines como int no deberias asegurar el tipo de dato usando

    da.SelectCommand.Parameters.Add("@IdNit", SqlDb.DbType.Int, 0).Value = Convert.ToInt32(Me.IdProveedorTextBox.Text)

    o sea asigna el tipo de dato correcto, de esta manera sabras si en elgun TextBox estas poniendo un valor numerico valido donde corresponde

    ademas una duda, veo que alli realzias un SELECT, pero porque defines tantos parametros de filtro ? digo no deberias solo poner los parametros que interesan que podrian ser 1 o2 campos, porque filtrar pot todos?

    o acaso es un filtro condicional en donde solo aplican algunos de estos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 4 de marzo de 2012 12:39
  • Gracias

    Esta es mi tabla en sql server r2

    USE CostosyAnexos
    GO
    
    IF OBJECT_ID('dbo.Proveedores', 'U') IS NOT NULL
      DROP TABLE dbo.Proveedores
    GO
    
    CREATE TABLE dbo.Proveedores
    (
    	IdNit int not null primary key,
    	NombreEmpresa nvarchar (40)  NULL, 
    	RepresentanteLegal nvarchar(40)not NULL, 
    	Direccion nvarchar (30) not NULL, 
        Telefono char (8) not null,
        Provincia nvarchar (50),
        Municipio nvarchar (50) not null,
        CtaBancariaBol int null,
        CtaBancariaenDolar int null,
        NombreBanco nvarchar(50) not null,
        CedulaIdentidad real not null,
        Extendido nchar (2) not null
    )
    GO

    y este es mi procedimiento

    use CostosyAnexos
    IF EXISTS (
      SELECT * 
        FROM INFORMATION_SCHEMA.ROUTINES 
       WHERE SPECIFIC_SCHEMA = N'dbo'
         AND SPECIFIC_NAME = N'InsertarProveedor' 
    )
       DROP PROCEDURE dbo.InsertarProveedor
    GO
    
    CREATE PROCEDURE dbo.InsertarProveedor
    	@IdNit int , 
    	@NombreEmpresa nvarchar(40),
    	@RepresentanteLegal nvarchar(40),
    	@Direccion nvarchar(30),
    	@Telefono char(8),
    	@Provincia nvarchar(50),
    	@Municipio nvarchar(50),
    	@CtaBancariaBol int = 0,
    	@CtaBancariaenDolar int = 0,
    	@NombredeBanco nvarchar(50),
    	@CedulaIdentidad real = 0,
    	@Extendido nchar(2)
    	
    AS
    	insert into Proveedores(IdNit,NombreEmpresa,RepresentanteLegal,Direccion,Telefono,Provincia,Municipio,CtaBancariaBol,CtaBancariaenDolar,NombreBanco,CedulaIdentidad,Extendido)
    	values(@IdNit,@NombreEmpresa,@RepresentanteLegal,@Direccion,@Telefono,@Provincia,@Municipio,@CtaBancariaBol,@CtaBancariaenDolar,@NombredeBanco,@CedulaIdentidad,@Extendido)
    	
    GO
    
    -- =============================================
    -- Example to execute the stored procedure
    -- =============================================
    --EXECUTE dbo.InsertarProveedor , 
    GO
    select * from Proveedores

    Por favor si algo tengo que corregir agradecere gentilmente


    domingo, 4 de marzo de 2012 13:35
  • Gracias

    Esta es mi tabla en sql server r2

    USE CostosyAnexos
    GO
    
    IF OBJECT_ID('dbo.Proveedores', 'U') IS NOT NULL
      DROP TABLE dbo.Proveedores
    GO
    
    CREATE TABLE dbo.Proveedores
    (
    	IdNit int not null primary key,
    	NombreEmpresa nvarchar (40)  NULL, 
    	RepresentanteLegal nvarchar(40)not NULL, 
    	Direccion nvarchar (30) not NULL, 
        Telefono char (8) not null,
        Provincia nvarchar (50),
        Municipio nvarchar (50) not null,
        CtaBancariaBol int null,
        CtaBancariaenDolar int null,
        NombreBanco nvarchar(50) not null,
        CedulaIdentidad real not null,
        Extendido nchar (2) not null
    )
    GO

    y este es mi procedimiento

    use CostosyAnexos
    IF EXISTS (
      SELECT * 
        FROM INFORMATION_SCHEMA.ROUTINES 
       WHERE SPECIFIC_SCHEMA = N'dbo'
         AND SPECIFIC_NAME = N'InsertarProveedor' 
    )
       DROP PROCEDURE dbo.InsertarProveedor
    GO
    
    CREATE PROCEDURE dbo.InsertarProveedor
    	@IdNit int , 
    	@NombreEmpresa nvarchar(40),
    	@RepresentanteLegal nvarchar(40),
    	@Direccion nvarchar(30),
    	@Telefono char(8),
    	@Provincia nvarchar(50),
    	@Municipio nvarchar(50),
    	@CtaBancariaBol int = 0,
    	@CtaBancariaenDolar int = 0,
    	@NombredeBanco nvarchar(50),
    	@CedulaIdentidad real = 0,
    	@Extendido nchar(2)
    	
    AS
    	insert into Proveedores(IdNit,NombreEmpresa,RepresentanteLegal,Direccion,Telefono,Provincia,Municipio,CtaBancariaBol,CtaBancariaenDolar,NombreBanco,CedulaIdentidad,Extendido)
    	values(@IdNit,@NombreEmpresa,@RepresentanteLegal,@Direccion,@Telefono,@Provincia,@Municipio,@CtaBancariaBol,@CtaBancariaenDolar,@NombredeBanco,@CedulaIdentidad,@Extendido)
    	
    GO
    
    -- =============================================
    -- Example to execute the stored procedure
    -- =============================================
    --EXECUTE dbo.InsertarProveedor , 
    GO
    select * from Proveedores

    Por favor si algo tengo que corregir agradecere gentilmente

    domingo, 4 de marzo de 2012 13:38
  • no creo qe le problema sea en el procedure, sino en la forma en que lo invocas

    ahh el procedure realiza un INSERT

    intenta validando que los campos de textbox que deban ser numericos en realidad tengas un valor numerico

    por eso comente lo del

    da.SelectCommand.Parameters.Add("@IdNit", SqlDb.DbType.Int, 0).Value = Convert.ToInt32(Me.IdProveedorTextBox.Text)

    asigna el tipo correcto cuando invoques al procedure

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 4 de marzo de 2012 14:28
  • Copie la lina de códog que me propuso y ni aun asi

    Imports System.Data.SqlClient Public Class Proveedores Dim da As SqlDataAdapter Dim ds As DataSet Private Sub ProveedoresBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Me.Validate() 'Me.ProveedoresBindingSource.EndEdit() 'Me.TableAdapterManager.UpdateAll(Me.CostosyAnexosDataSet) End Sub Private Sub Proveedores_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub AltaProveedor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AltaProveedor.Click da = New SqlDataAdapter("InsertarProveedor", cn) ds = New DataSet da.SelectCommand.CommandType = CommandType.StoredProcedure da.SelectCommand.Parameters.Add("@IdNit", SqlDbType.Int, 0).Value = Convert.ToInt32(Me.IdNitTextBox.Text) da.SelectCommand.Parameters.Add("@NombreEmpresa", SqlDbType.NVarChar, 40).Value = Me.NombreEmpresaTextBox.Text da.SelectCommand.Parameters.Add("@RepresentanteLegal", SqlDbType.NVarChar, 40).Value = Me.RepresentanteLegalTextBox.Text da.SelectCommand.Parameters.Add("@Direccion", SqlDbType.NVarChar, 30).Value = Me.DireccionTextBox.Text da.SelectCommand.Parameters.Add("@Telefono", SqlDbType.Char, 8).Value = Me.TelefonoTextBox.Text da.SelectCommand.Parameters.Add("@Provincia", SqlDbType.NVarChar, 50).Value = Me.ProvinciaTextBox.Text da.SelectCommand.Parameters.Add("@Municipio", SqlDbType.NVarChar, 50).Value = Me.MunicipioTextBox.Text da.SelectCommand.Parameters.Add("@CtaBancariaBol", SqlDbType.Int, 0).Value = Me.CtaBancariaBolTextBox.Text da.SelectCommand.Parameters.Add("@CtaBancariaenDolar", SqlDbType.Int, 0).Value = Me.CtaBancariaenDolarTextBox.Text da.SelectCommand.Parameters.Add("@NombredeBanco", SqlDbType.NVarChar, 50).Value = Me.NombredeBancoTextBox.Text da.SelectCommand.Parameters.Add("@CedulaIdentidad", SqlDbType.Real, 0).Value = Me.CedulaIdentidadTextBox.Text da.SelectCommand.Parameters.Add("@Extendido", SqlDbType.NChar, 2).Value = Me.ExtendidoComboBox.SelectedText da.Fill(ds, "Proveedores")

    Gracias por colaborarme ahi dejo la imagen del formulario a y algo más

    pues resulta que alguna vez ingresa pero solo se ve cuando ejecuto mi procedimiento insertar y no se ingresan los datos del combobox es decir queda vacio

    oase a asi

    SELECT * FROM PROVEEDORES

    pero cuando ejecuto desde la tabla

    select * from proveedores no muestra y cierro sql y desaparecen los datos

    gracias aguardare sus comentarios

    domingo, 4 de marzo de 2012 15:21
  • Hola Roberto, disculpa, pero quieres decir que los datos que ingresas no se ven dentro de la base de datos ? .. No entendí esa parte.. 

    Con lo del Combobox, nunca vas a obtener los datos seleccionados del combo con la propiedad "SelectedText", esa propiedad no te servirá. Usa : Me.ExtendidoComboBox.SelectedItem.ToString(). Con esto obtendrás el valor del "item" seleccionado. 

    Saludos desde República Dominicana. :) Blog


    domingo, 4 de marzo de 2012 16:03
  • pero no era solo esa lines, eran todas las lineas donde el tipo de dato sea numerico

    puse esa linea a modo de ejemplo, pero deberia ser tambien en CtaBancariaBol, CtaBancariaenDolar

    es mas en CedulaIdentidad es un caso espacial, deberias usar Convert.ToSingle()

    pero asegura que los valores que asignas a esos parametros tienen numero en los textbox

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 4 de marzo de 2012 16:29
  • Perfecto, pero ahora se sustito otro mensajito,

    que yo sepa ( no mucho) "pero gracias a sus aportes aprendere",  cuando declaro un int puedo ingresar ( 1 ) o (1234567890) si estoy equivocado por favor me lo haces saber y pues me muestra este mensaje

    y pues yo coloque el Idnit que significa " Numero de Identificación Tributaria" NIT con int porque es un numero variable y esta aun sujeto a cambios en mi pais por eso no quise poner un numero que sea 10 caracteres o algo asi.

    ingrensando cualquiero otra cantidad de numeros me sale este error por lo demas bien

    Agradezco la paciena distinguido leandro

    domingo, 4 de marzo de 2012 17:44
  • pero ese valor excede a un integer

    porque no usas un long ? o sea un Convert.ToInt64()

    es mas el mensaje lo deja bien claro al problema

    recuerda cambiar tambien esto en la db porque seria un bigint el tipo de dato para ese campo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Roberto Melgar domingo, 4 de marzo de 2012 18:38
    domingo, 4 de marzo de 2012 18:33
  • Muy gentil Leando en Domingo Ud. Ayudando a la comunidad, muchas gracias.

    quedo perfecto,

    un favor mas algun libro que me aconcejes para leer al respecto, o un link

    Cierro el hilo muchas gracias

    Roberto Melgar

    domingo, 4 de marzo de 2012 18:41
  • Distinguido Manues gracias por los aportes quedo perfecto

    Roberto Melgar

    domingo, 4 de marzo de 2012 18:41
  • mas que libro recomendaria revises el msdn, alli hay muchisima data

    vb.net msdn

    aunque un poco viejito pero para inciiar igual de valido

    Programacion Visual Basic NET - Eidos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 4 de marzo de 2012 18:55
  • Esta excelente

    me despido y oja Dios quiera que nos volvamos a encontrar pues necesitare mucha ayuda ahora que estoy migrando de access a Vs. y sql no para hasta conseguir hacer lo mismo o mejor que tenia en access 2010

    un gusto muchas gracias

    Roberto Melgar

    domingo, 4 de marzo de 2012 19:01