Trabajando con una base de datos de SQL Server
similar a la siguiente:
En un proyecto de ASP.NET
tenía mi DAL
(archivo xsd) en el cual agregué un TableAdapter
con la siguiente consulta:
SELECT
Alumno.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno
Al tratar de utilizar los datos en una página ASPX
mediante un ObjectDataSource
, me aparecía este error:
No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.
En inglés:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints
Nota: Esto ocurre normalmente en consultas con JOINS
. Antes de seguir las instrucciones que voy a dar, intenta borrar tu TableAdapter
y volverlo a crear, puede ser que hayas modificado el tamaño de algún campo en la base de datos y no lo hayas ajustado en el xsd. Si no se arregló, continúa leyendo.
Investigando, encontré, que si quito la llave Alumno.IdAlumno
de la consulta se soluciona el problema, sin embargo no lo puedo hacer porque en este caso específico necesito la llave para pasarla como parámetro en un vínculo a otra página.
Como podrás ver, la llave IdAlumno
está tanto en la tabla Alumno
(llave primaria), como en Tarea
(llave foránea). Para solucionar el problema, utiliza en tu consulta la llave foránea (Tarea.IdAlumno) en vez de la primaria (Alumno.IdAlumno), las dos llevan siempre el mismo valor, y solucionarás el problema, así:
SELECT
Tarea.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno
No necesariamente debe ser asi. Solo declara los campos antes de asingar el resultado de tu consulta a tu TableAdapter y listo.
De esa manera, puedes seguir utilizando tu campo de tabla primaria.
Saludos.
gracias por tu ayuda no sabia cual era el error de mi reporte y me ayudaste
gracias por tu ayuda logre descubrir mi error muchas gracias!!!
Gracias me ayudaste a resolverlo de manera rápida
Gracias, tenia ese error y no sabía que era afortunadamente se solucionó borrando el DataSet y volviéndolo a crear.
I had the same problem with the queries, when loading the Datatable () with the MYSQL Reader it generated error NON-NULL, UNIQUE or FOREIGN-KEY.
In the end I solved it by changing the MySQL Connector.NET version.
https://dev.mysql.com/downloads/connector/net/
Estuves horas con este problema, modifique el tamaño del campo en el xsd y se soluciono, gracias
El problema fue que modifique el tamaño de algún campo como lo indicas, lo quite y lo volví a agregar y funciono. Gracias fue de mucha ayuda.
Mil gracias, me funcionó eliminando el DataTable y creandolo de nuevo. Gracias!!!
¡Muchas gracias! Lo solucioné quitando y volviendo a poner una columna en el dataset a la cual le había cambiado el tamaño en la tabla
Amigo eres mi heroe, gracias por la información
Muchas gracias, llevo tiempo intentando hacer eso y no podía, era para un examen, grande brother, gracias