Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2011, 09:44
Avatar de kharen
kharen
 
Fecha de Ingreso: septiembre-2009
Mensajes: 75
Antigüedad: 15 años, 5 meses
Puntos: 2
Error al convertir el valor del parámetro de SqlParameter a Int32

Hola a todos.

Tengo un problema con mi aplicacion asp.net con c#. Estoy usando 3 capas; todo va bien hasta que llega a la linea de codigo donde se ejecuta el procedimiento almacenado: SqlHelper.ExecuteScalar(poTx, "usp_RegistrarUsuario", par) y me da el error Error al convertir el valor del parámetro de SqlParameter a Int32.

Este es mi codigo:

CAPA ENTIDAD:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ENTIDAD
{
public class UsuarioEntidad
{
private int _IdUsuario;
public int IdUsuario
{
get { return _IdUsuario; }
set { _IdUsuario = value; }
}

private String _NomApe;
public String NomApe
{
get { return _NomApe; }
set { _NomApe = value; }
}

private String _Correo;
public String Correo
{
get { return _Correo; }
set { _Correo = value; }
}

private String _Clave;
public String Clave
{
get { return _Clave; }
set { _Clave = value; }
}

private DateTime _FechaNac;
public DateTime FechaNac
{
get { return _FechaNac; }
set { _FechaNac = value; }
}

private int _IdPais;
public int IdPais
{
get { return _IdPais; }
set { _IdPais = value; }
}

private String _Ciudad;
public String Ciudad
{
get { return _Ciudad; }
set { _Ciudad = value; }
}

private int _Publicidad;
public int Publicidad
{
get { return _Publicidad; }
set { _Publicidad = value; }
}

private String _Sexo;
public String Sexo
{
get { return _Sexo; }
set { _Sexo = value; }
}

private int _TipoUsu;
public int TipoUsu
{
get { return _TipoUsu; }
set { _TipoUsu = value; }
}

private int _Estado;
public int Estado
{
get { return _Estado; }
set { _Estado = value; }
}

///pais

private int _PAI_ISONUM;
public int PAI_ISONUM
{
get { return _PAI_ISONUM; }
set { _PAI_ISONUM = value; }
}

private String _PAI_ISO2;
public String PAI_ISO2
{
get { return _PAI_ISO2; }
set { _PAI_ISO2 = value; }
}

private String _PAI_ISO3;
public String PAI_ISO3
{
get { return _PAI_ISO3; }
set { _PAI_ISO3 = value; }
}

private String _PAI_NOMBRE;
public String PAI_NOMBRE
{
get { return _PAI_NOMBRE; }
set { _PAI_NOMBRE = value; }
}

}
}


CAPA DATOS:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;
using ENTIDAD;

namespace DATOS
{
public class UsuarioDatos : DataAccess
{
public Int32 RegistrarUsuarios(UsuarioEntidad oEUsuarioEntidad)
{
Int32 liResultado;

//conexion
SqlTransaction poTx;
SqlConnection loCn = new SqlConnection();
loCn.ConnectionString = ConnectionString;

//parametros
SqlParameter[] par = new SqlParameter[11];
par[0] = new SqlParameter("@IdUsuario", System.Data.SqlDbType.Int); par[0].Value = oEUsuarioEntidad.IdUsuario;
par[1] = new SqlParameter("@NomApe", System.Data.SqlDbType.VarChar); par[1].Value = oEUsuarioEntidad.NomApe;
par[2] = new SqlParameter("@Correo", System.Data.SqlDbType.VarChar); par[2].Value = oEUsuarioEntidad.Correo;
par[3] = new SqlParameter("@Clave", System.Data.SqlDbType.VarChar); par[3].Value = oEUsuarioEntidad.Clave;
par[4] = new SqlParameter("@FechaNac", System.Data.SqlDbType.DateTime); par[4].Value = oEUsuarioEntidad.FechaNac;
par[5] = new SqlParameter("@IdPais", System.Data.SqlDbType.Int); par[5].Value = oEUsuarioEntidad.IdPais;
par[6] = new SqlParameter("@Ciudad", System.Data.SqlDbType.VarChar); par[6].Value = oEUsuarioEntidad.Ciudad;
par[7] = new SqlParameter("@Publicidad", System.Data.SqlDbType.Int); par[7].Value = oEUsuarioEntidad.Publicidad;
par[8] = new SqlParameter("@Sexo", System.Data.SqlDbType.Char); par[8].Value = oEUsuarioEntidad.Sexo;
par[9] = new SqlParameter("@TipoUsu", System.Data.SqlDbType.Int); par[9].Value = oEUsuarioEntidad.TipoUsu;
par[10] = new SqlParameter("@Estado", System.Data.SqlDbType.Int); par[10].Value = oEUsuarioEntidad.Estado;

loCn.Open();
poTx = loCn.BeginTransaction();
try
{
liResultado = Convert.ToInt32(SqlHelper.ExecuteScalar(poTx, "usp_RegistrarUsuario", par));
poTx.Commit();
}
catch (Exception e)
{
liResultado = -1;
poTx.Rollback();
throw e;
}
finally
{

}
return liResultado;
}
}
}



CAPA NEGOCIOS:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DATOS;
using ENTIDAD;

namespace NEGOCIO
{
public class UsuarioBusiness
{
public Int32 RegistrarUsuario(UsuarioEntidad oEUsuarioEntidad)
{
UsuarioDatos data = new UsuarioDatos();
data.OpenConnection();
try
{
return data.RegistrarUsuarios(oEUsuarioEntidad);
}
catch (Exception ex)
{
throw ex;
}
finally
{
data.CloseConnection();
}
}

}
}


MI APLICACION WEB:


protected void btnRegister_Click(object sender, ImageClickEventArgs e)
{
UsuarioEntidad oEUsuarioEntidad = new UsuarioEntidad();
UsuarioBusiness oBUsuarioBusiness = new UsuarioBusiness();
string script = "";

try
{

oEUsuarioEntidad.IdUsuario = 0;
oEUsuarioEntidad.NomApe = txtNomApe.Text;
oEUsuarioEntidad.Correo = txtCorreo.Text;
oEUsuarioEntidad.Clave = txtClave.Text;
oEUsuarioEntidad.FechaNac = Convert.ToDateTime(txtDia.Text + "/" + txtMes.Text + "/" + txtAnio.Text);
oEUsuarioEntidad.IdPais = Convert.ToInt32(ddlPais.SelectedValue);
oEUsuarioEntidad.Ciudad = txtCiudad.Text;
if (ChkBxSI.Checked == true)
oEUsuarioEntidad.Publicidad = 1;//SI
else
oEUsuarioEntidad.Publicidad = 0;//NO
oEUsuarioEntidad.Sexo = ddlSexo.SelectedValue.ToString();
oEUsuarioEntidad.TipoUsu = 2; //inscrito
oEUsuarioEntidad.Estado = 1;//activado
oBUsuarioBusiness.RegistrarUsuario(oEUsuarioEntida d);
script = "<script language='JavaScript'>window.opener.location = window.opener.location; window.close();</script>";
ClientScript.RegisterStartupScript(typeof(Page), "ActualizarUsuario", script);

}




MI PROCEDIMIENTO ALMACENADO:



IF EXISTS(SELECT * FROM sys.objects WHERE type = 'P' AND name = 'usp_RegistrarUsuario')
DROP PROCEDURE usp_RegistrarUsuario
GO

CREATE PROCEDURE dbo.usp_RegistrarUsuario
@IdUsuario INT,
@NomApe VARCHAR(300),
@Correo VARCHAR(300),
@Clave VARCHAR(50),
@FechaNac DATETIME,
@IdPais INT,
@Ciudad VARCHAR(300),
@Publicidad INT,
@Sexo CHAR(1),
@TipoUsu INT,
@Estado INT
AS
IF EXISTS(SELECT IdUsuario FROM dbo.Usuario WHERE IdUsuario=@IdUsuario)
BEGIN
UPDATE [dbo].Usuario
SET
NomApe = @NomApe,
Correo = @Correo,
Clave = @Clave,
FechaNac = @FechaNac,
IdPais = @IdPais,
Ciudad = @Ciudad,
Publicidad = @Publicidad,
Sexo = @Sexo,
TipoUsu = @TipoUsu,
Estado = @Estado
WHERE
IdUsuario = @IdUsuario
END
ELSE
BEGIN

INSERT INTO dbo.Usuario
(
NomApe,
Correo,
Clave,
FechaNac,
IdPais,
Ciudad,
Publicidad,
Sexo,
TipoUsu,
Estado
)
VALUES
(
@NomApe,
@Correo,
@Clave,
@FechaNac,
@IdPais,
@Ciudad,
@Publicidad,
@Sexo,
@TipoUsu,
@Estado
)
END
GO


Como dije, todo va bien hasta que llega finalmente a la linea de codigo:

liResultado = Convert.ToInt32(SqlHelper.ExecuteScalar(poTx, "usp_RegistrarUsuario", par));

Me parece extraño ya que ese mismo codigo he usado para hacer otra insercion en otro proyecto, funcionaba bien...

ayudenme porfavor

Última edición por kharen; 31/10/2011 a las 09:51