[ Foro de C# ]
muy buenas, estoy realizando un deber de la universidad, el programa me muestra este error
referencia a objeto no establecida como instancia de un objeto.
estoy programando en 3 capas
Revise el código con los breakpoints, y al parecer cuando envió el valor de la cadena de conexión de la capa datos a la capa negocio... el valor que recibe es null, entonces al momento de abrir la conexión me da esta exepcion. añado codigo fuente esero puedan darme una mano.
//capa negocio
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data; //libreria ado.net
using System.Data.OleDb; //libreria ado.net
namespace CapaDatos
{
public class ClsConexion
{
//variable privada para establecer conexxion a la base de datos
private OleDbConnection cnn;
//metodo constructor
public ClsConexion()
{
//inicializamos el string de conexcion
OleDbConnection cnn =new OleDbConnection ("Provider = SQLNCLI11; Data Source = PC - JOSUE; Integrated Security = SSPI; Initial Catalog = Roles");
}
//Propiedad para manipular la variable privada cnn
public OleDbConnection Conexion
{
get { return cnn; }
set {cnn=value; }
}
}
}
//capa negocio
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data; //Ado.net
using System.Data.OleDb; //Ado.net
using CapaDatos; //importando libreria capa de Datos
namespace CapaNegocioRoles
{
public class Empleado
{
private string _Numero_empleado;
private string _Nombre_empleado;
private float _Sueldo_final = 0;
private int CodError = 0;
private string MsgError = "";
//Metodo constructor
public Empleado()
{//Inicio
_Numero_empleado ="";
_Nombre_empleado ="";
_Sueldo_final =0;
}//Fin
public int pCodError
{
get { return CodError; }
set { CodError = value; }
}
public string pMsgError
{
get { return MsgError; }
set { MsgError = value; }
}
public string Numero_empleado
{
get { return _Numero_empleado;}
set { _Numero_empleado = value;}
}
public string Nombre_empleado
{
get { return _Nombre_empleado; }
set { _Nombre_empleado = value; }
}
public float Sueldo_final
{
get { return _Sueldo_final; }
set { _Sueldo_final = value; }
}
//Adiciona valores al sueldo
public float Sumar_sueldo(float valor)
{
_Sueldo_final += valor;
return _Sueldo_final;
}
//Resta valores al sueldo
public float Restar_sueldo(float valor)
{
_Sueldo_final += valor;
return _Sueldo_final;
}
//Calcula Hora Extra
public float Calcula_hora_extra(float valor, float cantidad)
{
Sumar_sueldo(valor* cantidad);
return _Sueldo_final;
}
public Boolean GuardarDatos()
{
ClsConexion objCnn = new ClsConexion();
OleDbCommand objCmd = new OleDbCommand();
OleDbParameter objPrm = new OleDbParameter();
try
{
CodError = 0;
MsgError = "";
objCnn.Conexion.Open();
objCmd.Connection = objCnn.Conexion;
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.CommandText = "sp_IngresosDatos";
//num de empleado
objPrm = new OleDbParameter("@Num_Empleado", OleDbType.VarChar, 10);
objPrm.Direction = ParameterDirection.Input;
objPrm.Value = _Numero_empleado;
objCmd.Parameters.Add(objPrm);
//nombre de empleado
objPrm = new OleDbParameter("@Nombre_Empleado", OleDbType.VarChar, 255);
objPrm.Direction = ParameterDirection.Input;
objPrm.Value = _Nombre_empleado;
objCmd.Parameters.Add(objPrm);
//sueldo del empleado
objPrm = new OleDbParameter("@Sueldo", OleDbType.Decimal, 2);
objPrm.Direction = ParameterDirection.Input;
objPrm.Value = _Sueldo_final;
objCmd.Parameters.Add(objPrm);
objCmd.ExecuteNonQuery();
objCmd.Dispose();
objCnn.Conexion.Close();
}
catch (Exception ex)
{
CodError = -100;
MsgError = ex.Message;
}
return true;
}
}
}
// form 1 por ciacaso
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data; //Ado.net
using System.Data.OleDb; //Ado.net
using CapaNegocioRoles; //Importando la libreria de negocio
namespace ProyectoRoles
{
public partial class Form1 : Form
{
//Declaracion del objeto_empleado a partir
//de la clase empleado
Empleado ObjetoEmpleado = new Empleado();
public Form1()
{
InitializeComponent();
}
private void BtnCalcular_Click(object sender, EventArgs e)
{
ObjetoEmpleado.Nombre_empleado = this.TxtNombreEmpleado.Text;
ObjetoEmpleado.Numero_empleado = this.TxtNumeroEmpleado.Text;
ObjetoEmpleado.Sumar_sueldo(float.Parse(this.TxtSueldo.Text));
ObjetoEmpleado.Sumar_sueldo(float.Parse(this.TxtBonos.Text));
ObjetoEmpleado.Restar_sueldo(float.Parse(this.TxtMultas.Text));
ObjetoEmpleado.Restar_sueldo(float.Parse(this.TxtDescuentos.Text));
ObjetoEmpleado.Calcula_hora_extra(float.Parse(this.TxtValorHorasExtras.Text), float.Parse(this.TxtNumHorasExtras.Text));
this.TxtSueldoFinal.Text = ObjetoEmpleado.Sueldo_final.ToString();
ObjetoEmpleado.GuardarDatos();
if (ObjetoEmpleado.pCodError == 0)
{
MessageBox.Show("Registro ingresados correctamente","OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
}else
{
MessageBox.Show("Fallo en el registro. " + ObjetoEmpleado.pMsgError, "Error" , MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
Agradecería su pronta respuesta
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)