日期:2014-05-17  浏览次数:21112 次

错误“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值”如何来解决?
在数据集中建A、B两个表,A表的一个字段是B表的一个外键,然后在水晶报表中要显示两个表的部分信息,
运行时出现如下错误详细信息:


  用户代码未处理 System.Data.ConstraintException
  Message="未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。"
  Source="System.Data"
  StackTrace:
  在 System.Data.DataSet.FailedEnableConstraints()
  在 System.Data.DataSet.EnableConstraints()
  在 System.Data.DataSet.set_EnforceConstraints(Boolean value)
  在 System.Data.DataTable.EndLoadData()
  在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
  在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
  在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
  在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
  在 minzu.Page_Load(Object sender, EventArgs e) 位置 f:\CrystalReportsWebSite_hr\minzu.aspx.cs:行号 32
  在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
  在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
  在 System.Web.UI.Control.OnLoad(EventArgs e)
  在 System.Web.UI.Control.LoadRecursive()
  在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


------解决方案--------------------
探讨
如楼上所说,是数据出了问题。
建议你在sql填充的时候处理下 空 和 会导致主键重复的情况

PS:楼上的这么快就升两星星了啊,厉害~~

------解决方案--------------------
这证明的主外键设置得有问题。。。