elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  "No se puede agregar o cambiar el registro porque se necesita un registro relaci
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: "No se puede agregar o cambiar el registro porque se necesita un registro relaci  (Leído 2,964 veces)
Guillito

Desconectado Desconectado

Mensajes: 35


Ver Perfil
"No se puede agregar o cambiar el registro porque se necesita un registro relaci
« en: 9 Abril 2015, 01:29 am »

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....


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


« Última modificación: 17 Abril 2015, 00:39 am por Eleкtro » En línea

fran800m

Desconectado Desconectado

Mensajes: 204



Ver Perfil
Re: "No se puede agregar o cambiar el registro porque se necesita un registro relaci
« Respuesta #1 en: 16 Abril 2015, 21:03 pm »

La relación materias - alumno es N a N, no entiendo lo que estás haciendo.

En cualquier caso ten en cuenta que cuando 2 tablas están relacionadas tienes que crear los DataRelation.

Un saludo,


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
agregar un registro a una base de datos
Programación Visual Basic
Sebicho 7 3,033 Último mensaje 2 Julio 2005, 21:27 pm
por Zanoni
Agregar registro en C++ [Devcpp]
Programación C/C++
EAX_ 5 4,294 Último mensaje 13 Septiembre 2010, 18:14 pm
por Eternal Idol
[SOLUCIONADO] Agregar Registro
Programación Visual Basic
VanHan 4 2,985 Último mensaje 22 Noviembre 2010, 19:29 pm
por VanHan
Agregar Registro en BD con ADO
Programación Visual Basic
Brian1511 0 1,415 Último mensaje 9 Febrero 2015, 18:36 pm
por Brian1511
[Ayuda]Agregar registro SVR hostalia para server Minecraft
Bases de Datos
thecloudff7 0 2,464 Último mensaje 19 Enero 2017, 09:38 am
por thecloudff7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines