C sharp - "No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'A

 
Vista:
Imágen de perfil de Guillermo

"No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'A

Publicado por Guillermo (49 intervenciones) el 09/04/2015 01:22:41
Tengo un GridView con Nombres y Apellidos de Alumnos de un Institución, obtenidos de la Tabla Alumno (El Grid View toma el Id de lo seleccionado con DataKeyNames al igual que los otros GridsView, asi, luego de seleccionar Alumno del GridAlumno, se debe seleccionar el Curso del GridCurso, aquí, luego de la anterior acción, se despliega el GridMaterias con CheckBoxs en el Template, con lo cual yo puedo elegir la Materia o Materias de manera individual, a las cuales me quiero inscribir)..................Asi, con lo seleccionado con este nuevo GridView, mas lo seleccionado con los otros GridsView, me da el mismo error:

"No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'Alumno'."

Aquí dejo código a los fines de si Uds. pueden determinar el error, o la forma correcta de sintaxis para que funcione, lo acrediten por este medio, etc.......

Disculpen las molestias, estare siempre agradecido, nos vemos....





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
protected void Page_Load(object sender, EventArgs e)
        {
            AccesoLogicaM b = new AccesoLogicaM();
            GridCursos.DataSource = b.fillGridView("Select Id_Curso, Año, Seccion From Curso");
            GridCursos.DataBind();
 
            GridAlumno.DataSource = b.fillListView("Select Id_Alumno, Nombre, Apellido From Alumno Order By Nombre Asc");
            GridAlumno.DataBind();
 
        }
protected void GridCursos_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Se obtiene la fila seleccionada del gridview
 
            GridViewRow row = GridCursos.SelectedRow;
 
            // Obtengo el id de la entidad que se esta editando
            // en este caso de la entidad Curso
            ViewState["idCurso"] = Convert.ToInt32(GridCursos.DataKeys[row.RowIndex].Value);
            CargarData();
        }
        private void CargarData()
        {
            string connection = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            OleDbConnection cnn = new OleDbConnection(connection);
            string SQL = string.Empty;
            SQL = ("SELECT M.Id_Materia, M.Nombre FROM Materias M, CursosMaterias cm WHERE cm.id_Materia = M.Id_Materia AND cm.id_Curso = @View");
            OleDbCommand comando = new OleDbCommand(SQL, cnn);
            comando.CommandType = CommandType.Text;
            cnn.Open();
            comando.Parameters.Clear();
            comando.Parameters.AddWithValue("@View", (ViewState["idCurso"]));
            DataTable tabla = new DataTable();
            OleDbDataAdapter Adaptador = new OleDbDataAdapter(comando);
            Adaptador.Fill(tabla);
            GridInscMaterias.DataSource = tabla;
            GridInscMaterias.DataBind();
            cnn.Close();
        }
 
        protected void GridInscMaterias_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
        protected void ButtonTodas_Click(object sender, EventArgs e)
        {
            foreach
            (GridViewRow dgi in GridInscMaterias.Rows)
            {
                CheckBox myCheckBox = dgi.Cells[0].Controls[1] as CheckBox;
 
                if (myCheckBox != null)
                {
 
                    if (myCheckBox.Checked == true)
                    {
                        ViewState["idMateria"] = GridInscMaterias.DataKeys[dgi.RowIndex][0].ToString();
 
                        {
                            string cadenaConexion = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                            OleDbConnection cnn = new OleDbConnection(cadenaConexion);
                            cnn.Open();
                            string SQL = string.Empty;
                            SQL = ("SELECT id_cursoMateria From CursosMaterias cm Where cm.id_Curso = @idCurso AND cm.id_Materia = @idMateria");
 
                            ViewState["idCursoMateria"] = SQL;
 
                            string sql = string.Empty;
                            sql = @"INSERT INTO AlumMatCursos (Id_Alumno, id_cursoMateria)
                                VALUES (@idAlumno, @idcurMat)";
                            OleDbCommand cmd = new OleDbCommand(sql, cnn);
                            cmd.Parameters.AddWithValue("@idCurso", (ViewState["idCurso"]));
                            cmd.Parameters.AddWithValue("@idMateria", (ViewState["idMateria"]));
                            cmd.Parameters.AddWithValue("@idAlumno", (ViewState["idAlumno"]));
                            cmd.Parameters.AddWithValue("@idcurMat", (ViewState["idCursoMateria"]));
                            cmd.ExecuteNonQuery();
                            cnn.Close();
                            lblMensaje.Text = "Se registraron correctamente en BD!";
                        }
                    }
                }
            }
        }
 
        protected void GridAlumno_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Se obtiene la fila seleccionada del gridview
 
            GridViewRow row = GridAlumno.SelectedRow;
 
            // Obtengo el id de la entidad que se esta editando
            // en este caso de la entidad Curso
            ViewState["idAlumno"] = Convert.ToInt32(GridAlumno.DataKeys[row.RowIndex].Value);
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder