none
Referencia a objeto no establecida como instancia de un objeto. RRS feed

  • Pregunta

  • Hola,

    Muy buenos días, estoy programando en tres capas el problema viene a que cuando le doy a guardar me sale el error de "referencia a objeto no establecida como instancia de un objeto".

    Por favor necesito que me ayuden y me digan que es lo que pasa, pero no encuentro que es!

    Saludos a todos y gracias de ante mano.

    aqui le dejo el codigo EN C#: Y LA BASE DE DATOS SQL

    CONECCION

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

    using System.Data.SqlClient;
    using System.Data;

    namespace Capa_Datos
    {
        class ConexionBD
        {
            String cadena = @"Data Source=INTEL-PC\SQLEXPRESS;Initial Catalog=COLEGIO;User ID=sa; password=sql;Integrated Security = True";
            SqlConnection cn;

            public SqlConnection abrirConeccion()
            {
                cn = new SqlConnection(cadena);

                if(cn.State== ConnectionState.Open)
                {
                    cn.Close();
                }
                else
                {
                    cn.Open();
                }
                return cn;
            }
        }
    }

    ---------------------------------------------------------------------------------------------------------------

    Entidades:

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Entidades { public class Docente { public string codigo { get; set; } public string nombre { get; set; } public string apellido { get; set; } public Distrito distrito { get; set; } public string direccion { get; set; } public string telefono { get; set; } public DateTime fec_nac { get; set; } public string sexo { get; set; } public string Dni { get; set; } public DateTime fec_Reg { get; set; } public string civil { get; set; } public string especialidad { get; set; } public string observacion { get; set; } public byte[] foto { get; set; } } }

    ----------------------------------------------------------------------------------

    DISTRITO

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

    namespace Entidades
    {
        public class Distrito
        {
            public string codigo { get; set; }
            public string distrito { get; set; }
        }
    }

    capa_Datos

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Entidades; using System.Data; using System.Data.SqlClient; namespace Capa_Datos { public class Docente_DAO { ConexionBD cn = new ConexionBD(); SqlCommand cmd; SqlDataAdapter da; DataTable dt; public DataTable listar() { da = new SqlDataAdapter("ListarDocentes", cn.abrirConeccion()); dt = new DataTable(); da.Fill(dt); return dt; } public string ins_upd_Docente(Docente d,int op) { string rpta = ""; string sql = "INSDOCENTE"; if (op == 1) { sql = "ACTDOCENTE"; } cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = sql; cmd.Connection = cn.abrirConeccion(); cmd.Parameters.AddWithValue("@CODIGO",d.codigo); cmd.Parameters.AddWithValue("@NOMBRE", d.nombre); cmd.Parameters.AddWithValue("@APELLIDO", d.apellido); cmd.Parameters.AddWithValue("@COD_DIS", d.distrito.distrito); cmd.Parameters.AddWithValue("@DIRECCION", d.direccion); cmd.Parameters.AddWithValue("@TELEFONO", d.telefono); cmd.Parameters.AddWithValue("@FEC_NAC", d.fec_nac); cmd.Parameters.AddWithValue("@SEXO", d.sexo); cmd.Parameters.AddWithValue("@DNI", d.Dni); cmd.Parameters.AddWithValue("@FEC_REG", d.fec_Reg); cmd.Parameters.AddWithValue("@EST_CIVIL", d.civil); cmd.Parameters.AddWithValue("@ESPECIALIDAD", d.especialidad); cmd.Parameters.AddWithValue("@OBSER", d.observacion); cmd.Parameters.AddWithValue("@FOTO",SqlDbType.Image).Value = d.codigo; int i = cmd.ExecuteNonQuery(); if (i > 0) { rpta = "Registrado Correctamente"; } else { rpta = "Fallo,Revisar los Campos"; } cmd.Parameters.Clear(); return rpta; } public int delDocente(Docente d) { try { cmd = new SqlCommand("DELDOCENTE"); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = cn.abrirConeccion(); cmd.Parameters.AddWithValue("@CODIGO",d.codigo); int i = cmd.ExecuteNonQuery(); if (i > 0) { return 1; } else { return 0; } } catch (Exception) { throw; } } } }

    ---------------------------------------------------------------------------------------

    DISTRITO

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Entidades;
    using System.Data;
    using System.Data.SqlClient;

    namespace Capa_Datos
    {
        public class Distrito_DAO
        {
            ConexionBD cn = new ConexionBD();
           
            SqlDataAdapter da;
            DataTable dt;
           
           
            public DataTable listar()
            {
                da = new SqlDataAdapter("ListarDistrito", cn.abrirConeccion());
                dt = new DataTable();
                da.Fill(dt);
                return dt;
            }

        }
    }

    Capa_Negocio

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using Entidades; using Capa_Datos; namespace Capa_Negocio { public class Docente_NE { Docente_DAO pdao = new Docente_DAO(); public DataTable listar() { return pdao.listar(); } public string ins_upd(Docente d,int op) { return pdao.ins_upd_Docente(d,op); } public int delDocente(Docente d) { return pdao.delDocente(d); } } }

    -----------------------------------------------------------------------------------

    DISTRITO

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

    using System.Data;
    using Entidades;
    using Capa_Datos;

    namespace Capa_Negocio
    {
      public  class Distrito_NE
        {
            Distrito_DAO dDao = new Distrito_DAO();

            public DataTable listar()
            {
                return dDao.listar();
            }
        }
    }

    capa_Presentacion (GUI)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Entidades;
    using Capa_Negocio;
    
    
    namespace Capa_Presentacion
    {
        public partial class Frm_Docentes : Form
        {
            public Frm_Docentes()
            {
                InitializeComponent();
            }
    
            Docente_NE doc = new Docente_NE();
            Docente d;
            Distrito_NE dis = new Distrito_NE();
            Distrito di;
            
            public void listarDistrito()
            {
                cboDistrito.DataSource = dis.listar();
                cboDistrito.DisplayMember = "DISTRITO";
                cboDistrito.ValueMember = "COD_DIS";
    
            }
    
            public string ins_upd(int op)
            {
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                Foto.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    
                string sms = "";
                d = new Docente();
                d.codigo = txtCodigo.Text;
                d.nombre = txtNombre.Text;
                d.apellido = txtNombre.Text;
                di = new Distrito();
                di.codigo = cboDistrito.SelectedValue.ToString();
                d.distrito = di;
                d.direccion = txtDireccion.Text;
                d.telefono = txtTelefono.Text;
                d.fec_nac = DateTime.Parse(dtNac.Value.ToString());
                d.sexo = cboSexo.SelectedValue.ToString();
                d.Dni = txtDni.Text;
                d.fec_Reg = DateTime.Parse(dtReg.Value.ToString());
                d.civil = cboEstado.SelectedValue.ToString();
                d.especialidad = txtEspecialidad.Text;
                d.observacion = txtObservacion.Text;
                d.foto = ms.GetBuffer();
    
                sms = doc.ins_upd(d, op).ToString();
                return sms;
            }
    
    
            public void listar()
            {
                dgDocente.DataSource = doc.listar();
            }
    
    
            private void Frm_Docentes_Load(object sender, EventArgs e)
            {
                listarDistrito();
                listar();
            }
    
            private void btn_Grabar_Click(object sender, EventArgs e)
            {
                try
                {
                    MessageBox.Show(ins_upd(0));
                    listar();
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            private void btn_Eliminar_Click(object sender, EventArgs e)
            {
             
            }
    
            private void btn_Actualizar_Click(object sender, EventArgs e)
            {
                try
                {
                    MessageBox.Show(ins_upd(1));
                    listar();
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
            private void btn_Limpiar_Click(object sender, EventArgs e)
            {
    
            }
    
            private void Rpt_PDF_Click(object sender, EventArgs e)
            {
    
            }
    
            private void Rpt_Excel_Click(object sender, EventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.Close();
            }
        }
    }
    DROP DATABASE COLEGIO
    CREATE DATABASE COLEGIO
    
    
    USE COLEGIO
    
    -----/*MANTENIMIENTO */------
    CREATE  TABLE DOCENTE(
    CODIGO CHAR(8) NOT NULL PRIMARY KEY,
    NOMBRE VARCHAR(100) NOT NULL,
    APELLIDO VARCHAR(100)NOT NULL,
    COD_DIS CHAR(5)REFERENCES DISTRITO ,
    DIRECCION  VARCHAR(80)NOT NULL,
    TELEFONO CHAR(9)NOT NULL,
    FEC_NAC DATE ,
    SEXO CHAR(10)NOT NULL,
    DNI CHAR(8) NOT NULL,
    FEC_REG DATE ,
    EST_CIVIL CHAR(15)NOT NULL,
    ESPECIALIDAD VARCHAR(80)NOT NULL,
    OBSER VARCHAR(100) NOT NULL,
    FOTO IMAGE 
    )
    GO ---/*FIN*/---
    
    -----REGISTRO DE DOCENTE----
    INSERT  DOCENTE VALUES ('P001','JOSE','FERNANDEZ',001,'LOS SAUCES #12',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P002','MARCOS','HERNANDEZ',005,'LOS SAPITOS #20',239654,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P003','CECILIA ','MENDEZ',009,'GRAN CHIMU #111',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P004','CARLOS','FRIAS',004,'PUEBLO JOVEN #102',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P005','MARTA','CASTILLO',002,'LOS SAUCES #16',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P006','LILIAN','TIMOTE',006,'RAMIRO PRIALE #',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P007','LUIS','SALDAÑA',003,'LOS SAUCES #172',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P008','LIDIA','ROMERO',011,'LOS SAUCES #125',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P009','TOMAS','SANCHES',010,'LOS SAUCES #127',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    INSERT  DOCENTE VALUES ('P0010','JESUS','VIDAL',008,'LOS SAUCES #120',229678,'1995-01-15','MASCULINO',70171488,'2017-05-25','CASADO','Ing: Sistemas','','');
    
    SELECT*FROM DOCENTE
    
    
    CREATE TABLE ALUMNO(
    CODIGO CHAR(8) NOT NULL PRIMARY KEY,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO CHAR(50)NOT NULL,
    COD_DIS CHAR(5)NOT NULL,
    DIRECCION  VARCHAR(80)NOT NULL,
    TELEFONO CHAR(9)NOT NULL,
    FEC_NAC DATE ,
    SEXO CHAR(10)NOT NULL,
    DNI CHAR(8) NOT NULL,
    FEC_REG DATE,
    CARRERA VARCHAR(80)NOT NULL,
    OBSER VARCHAR(50),
    FOTO IMAGE
    )
    GO/*FIN*/
    
    
    /*INGRESO */
    CREATE TABLE IALUMNO(
    CODIGO CHAR(8) NOT NULL REFERENCES ALUMNO ,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    CARRERA VARCHAR(80)NOT NULL,
    OBSER VARCHAR(50),
    FOTO IMAGE
    )
    
    CREATE TABLE IDOCENTE(
    CODIGO CHAR(8) NOT NULL REFERENCES DOCENTE,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    ESPECIALDIDAD VARCHAR(80)NOT NULL,
    OBSER VARCHAR(50),
    FOTO IMAGE,
    FECHA DATE
    )
    /*SALIDA*/
    CREATE TABLE SALUMNO(
    CODIGO CHAR(8) NOT NULL REFERENCES ALUMNO,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    CARRERA VARCHAR(80)NOT NULL,
    OBSER VARCHAR(50),
    FOTO IMAGE
    )
    
    CREATE TABLE SDOCENTE(
    CODIGO CHAR(8) NOT NULL REFERENCES DOCENTE,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    ESPECIALDIDAD VARCHAR(80)NOT NULL,
    OBSER VARCHAR(50),
    FOTO IMAGE
    )
    
    /*PERMISO*/
    CREATE TABLE PDOCENTE(
    CODIGO CHAR(8) NOT NULL REFERENCES DOCENTE,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    ESPECIALDIDAD VARCHAR(80)NOT NULL,
    MOTIVO VARCHAR(50)NOT NULL,
    DIAS CHAR(15)NOT NULL,
    FECHA DATE
    )
    
    CREATE TABLE PALUMNO(
    CODIGO CHAR(8) NOT NULL REFERENCES ALUMNO,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    CARRERA VARCHAR(80)NOT NULL,
    MOTIVO VARCHAR(50)NOT NULL,
    DIAS CHAR(15)NOT NULL,
    FECHA DATE
    )
    
    /*PAGOS*/
    CREATE TABLE PAGOS(
    NPAGO CHAR(5) PRIMARY KEY NOT NULL,
    TIPO CHAR(10)NOT NULL,
    FECHA DATE NOT NULL,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    CARRERA VARCHAR(80)NOT NULL,
    NONTO INT NOT NULL
    )
    
    /*RESERVAR*/
    CREATE TABLE RESERVA(
    CODIGO CHAR(8) NOT NULL PRIMARY KEY,
    NOMBRE VARCHAR(50) NOT NULL,
    APELLIDO VARCHAR(50)NOT NULL,
    CARRERA VARCHAR(80)NOT NULL,
    HORA CHAR(8) NOT NULL,
    FECHA DATE NOT NULL,
    TERMINO CHAR(8) NOT NULL,
    NAULA CHAR(5)NOT NULL,
    AULA CHAR(20)NOT NULL
    )
    
    ------/*DISTRITO*/------
    CREATE TABLE DISTRITO(
    COD_DIS CHAR(5)PRIMARY KEY NOT NULL,
    DISTRITO VARCHAR(50)NOT NULL 
    )
    GO ---/*FIN*/---
    
    -----REGISTRO DE DISTRITO----
    INSERT DISTRITO VALUES(001,'PORVENIR');
    INSERT DISTRITO VALUES(002,'TRUJILLO');
    INSERT DISTRITO VALUES(003,'EL MILAGRO');
    INSERT DISTRITO VALUES(004,'FLORENCIA DE MORA');
    INSERT DISTRITO VALUES(005,'LA ESPERANZA');
    INSERT DISTRITO VALUES(006,'HUANCHACO');
    INSERT DISTRITO VALUES(007,'LAREDO');
    INSERT DISTRITO VALUES(008,'MOCHE');
    INSERT DISTRITO VALUES(009,'SALAVERRY');
    INSERT DISTRITO VALUES(010,'SIMBAL');
    INSERT DISTRITO VALUES(011,'VICTOR LARCO');
    
    SELECT*FROM DISTRITO
    
    
    
    
    
    
    
    
    
    /*CONSTRAINS */
    ALTER TABLE DOCENTE 
    ADD FOREIGN KEY (COD_DIS)
    REFERENCES DISTRITO
    
    ALTER TABLE ALUMNO 
    ADD FOREIGN KEY (COD_DIS)
    REFERENCES DISTRITO
    
    /*FIN*/
    
    
    /**/

    PROCEDIMIENTO ALMACENADO

    /*LISTAR*/
    
    CREATE procedure ListarDocentes
    as
    select CODIGO,NOMBRE,APELLIDO, D.DISTRITO ,DIRECCION,TELEFONO,FEC_NAC,SEXO,DNI,FEC_REG,EST_CIVIL,ESPECIALIDAD,OBSER
     from DOCENTE tc
    inner join DISTRITO D
    on tc.COD_DIS=D.COD_DIS
    GO
    select*from DOCENTE
    /*INSERTAR*/
    
    CREATE PROCEDURE INSDOCENTE (
    @CODIGO CHAR(8) ,
    @NOMBRE VARCHAR(50) ,
    @APELLIDO VARCHAR(50),
    @COD_DIS CHAR(5),
    @DIRECCION  VARCHAR(80),
    @TELEFONO CHAR(9),
    @FEC_NAC DATE,
    @SEXO CHAR(10),
    @DNI CHAR(8) ,
    @FEC_REG DATE,
    @EST_CIVIL CHAR(15),
    @ESPECIALIDAD VARCHAR(80),
    @OBSER VARCHAR(50),
    @FOTO IMAGE
    )
    AS
    INSERT INTO DOCENTE VALUES(@CODIGO,@NOMBRE,@APELLIDO,@COD_DIS,@DIRECCION,@TELEFONO,@FEC_NAC,@SEXO,@DNI,@FEC_REG,@EST_CIVIL,@ESPECIALIDAD,@OBSER,@FOTO);
    
    /*ACTUALIZAR*/
    
    CREATE PROCEDURE ACTDOCENTE(
    @CODIGO CHAR(8) ,
    @NOMBRE VARCHAR(50) ,
    @APELLIDO VARCHAR(50),
    @COD_DIS CHAR(5),
    @DIRECCION  VARCHAR(80),
    @TELEFONO CHAR(9),
    @FEC_NAC DATE,
    @SEXO CHAR(10),
    @DNI CHAR(8) ,
    @FEC_REG DATE,
    @EST_CIVIL CHAR(15),
    @ESPECIALIDAD VARCHAR(80),
    @OBSER VARCHAR(50),
    @FOTO IMAGE
    )
    AS
    UPDATE DOCENTE 
    SET NOMBRE=@NOMBRE,APELLIDO=@APELLIDO,COD_DIS=@COD_DIS,DIRECCION=@DIRECCION,
    	TELEFONO=@TELEFONO,FEC_NAC=@FEC_NAC,SEXO=@SEXO,DNI=@DNI,FEC_REG=@FEC_REG,EST_CIVIL=@EST_CIVIL,
    	ESPECIALIDAD=@ESPECIALIDAD,OBSER=@OBSER,FOTO=@FOTO
    WHERE CODIGO=@CODIGO
    GO
    
    /*ELIMINAR*/
    CREATE PROCEDURE DELDOCENTE(
    @CODIGO CHAR(8) 
    )
    AS
    DELETE FROM DOCENTE WHERE CODIGO=@CODIGO
    
    
    /*2) LISTAR DISTRITO*/
    CREATE procedure ListarDistrito
    as
    select * from DISTRITO
    
    /*2) INSERTAR DISTRITO*/
    CREATE procedure InsDistrito (
    @COD_DIS CHAR(5),
    @DISTRITO varchar(50)
    )
    as
    begin
    insert DISTRITO values(@COD_DIS,@DISTRITO)
    end
    
    /*3) ACTUALIZAR DISTRITO*/
    CREATE procedure UpdDistrito(
    @COD_DIS CHAR(5),
    @DISTRITO varchar(50)
    )
    as
    begin
    update DISTRITO
        set DISTRITO=@DISTRITO
        
    	where COD_DIS=@COD_DIS
    end
    



    • Editado JesusT.F sábado, 24 de marzo de 2018 16:32
    sábado, 24 de marzo de 2018 16:23

Todas las respuestas

  • Hola.  Por favor elimine todo código que no tiene que ver con el problema en particular.  Apuesto a que el error le da en una línea específica.  Indique solamente ese código y muéstrenos claramente cuál línea arroja la excepción.

    Jose R. MCP
    Code Samples

    sábado, 24 de marzo de 2018 17:51
  • Hola JesusT.F

    Con respecto a tu consulta, te recomiendo indicar en el código que colocaste el error, esto es para que los colaboradores del foro puedan asesorarte mejor y poder llegar a una solución.

    Quedamos al pendiente de cualquier actualización de tu parte.

    Saludos Cordiales.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    sábado, 24 de marzo de 2018 23:12
    Moderador