DataSet myDS=new DataSet(); SqlDataAdapter SqlDA1=new SqlDataAdapter("Select * from Catalog1 where CriterionID='"+ id +"'",myCnn);
SqlDA1.Fill(myDS,"Catalog1"); SqlDataAdapter SqlDA2=new SqlDataAdapter("Select * from Catalog2",myCnn);
SqlDA2.Fill(myDS,"Catalog2"); SqlDataAdapter SqlDA3=new SqlDataAdapter("Select * from Item",myCnn);
SqlDA3.Fill(myDS,"Item"); //在表之间创建关系
myDS.Relations.Add("bc", myDS.Tables["Catalog1"].Columns["Catalog1ID"],myDS.Tables["Catalog2"].Columns["Catalog1ID"]);
myDS.Relations.Add("cd", myDS.Tables["Catalog2"].Columns["Catalog2ID"],myDS.Tables["Item"].Columns["Catalog2ID"]);运行提示错误:不能启用此约束,因为不是所有的值都具有相应的父值。
经过分析,发现是第一个查询语句使用里条件查询“ where CriterionID='"+ id +"' ”,去掉后正常。可是我又需要条件查询,该怎么决绝呢?
SqlDA1.Fill(myDS,"Catalog1"); SqlDataAdapter SqlDA2=new SqlDataAdapter("Select * from Catalog2",myCnn);
SqlDA2.Fill(myDS,"Catalog2"); SqlDataAdapter SqlDA3=new SqlDataAdapter("Select * from Item",myCnn);
SqlDA3.Fill(myDS,"Item"); //在表之间创建关系
myDS.Relations.Add("bc", myDS.Tables["Catalog1"].Columns["Catalog1ID"],myDS.Tables["Catalog2"].Columns["Catalog1ID"]);
myDS.Relations.Add("cd", myDS.Tables["Catalog2"].Columns["Catalog2ID"],myDS.Tables["Item"].Columns["Catalog2ID"]);运行提示错误:不能启用此约束,因为不是所有的值都具有相应的父值。
经过分析,发现是第一个查询语句使用里条件查询“ where CriterionID='"+ id +"' ”,去掉后正常。可是我又需要条件查询,该怎么决绝呢?
解决方案 »
- 动态控件互相读取数据问题
- 如何获取文章上一篇下一篇?
- 关于空间服务器,程序不能运行
- asp.net如何操作windows server 2003 的DHCP数据库?请教实例
- JS验证问题,急!!!!在线等,高手帮帮忙~~~
- 做好的aspnet文件拷贝到vs2003中说是没有配置好
- C# 程序集 Assembly 反射问题
- 谁能写个验证首尾不能有空格的正则表达式?
- window.showModalDialog("Dialog.aspx");传递参数的问题
- 晕,这是什么问题,朋友们进来看看,帮帮小弟的忙,有代码
- sample code about << Programming Microsoft .Net >>
- 又是一个奇怪的错误~~~~类型“TextBox”的控件“DataGrid1__ctl2_TextBox1”必须放在具有 runat=server 的窗体标记内。 在线等~~~~~~~~~~
=====>
SqlDataAdapter SqlDA2=new SqlDataAdapter("Select * from Catalog2 where Catalog1ID in (select Catalog1ID from Catalog1 where CriterionID='"+id+"')",myCnn);SqlDataAdapter SqlDA3=new SqlDataAdapter("Select * from Item",myCnn);
=====>
SqlDataAdapter SqlDA3=new SqlDataAdapter("Select * from Item where Catalog2ID in (select Catalog2ID from Catalog2 where catalog1ID in (select Catalog1ID from Catalog1 where CriterionID='"+id+"'))",myCnn);
SqlDataAdapter SqlDA2=new SqlDataAdapter("Select * from Catalog2",myCnn);
改成
SqlDataAdapter SqlDA2=new SqlDataAdapter("Select * from Catalog2 where Catalog1ID in (select Catalog1ID from Catalog1 where CriterionID='"+id+"')",myCnn);相映的你的
SqlDataAdapter SqlDA3=new SqlDataAdapter("Select * from Item",myCnn);
改成
SqlDataAdapter SqlDA3=new SqlDataAdapter("Select * from Item where Catalog2ID in (select Catalog2ID from Catalog2 where catalog1ID in (select Catalog1ID from Catalog1 where CriterionID='"+id+"'))",myCnn);
比如你在建立商品档案和计量单位的关系时,
就不能用商品档案表中的计量单位ID去关联计量单位表中的ID字段
因为商品档案表中的计量单位ID有重复!
这时候你必须把计量单位表作为主表,而把商品档案表作为从表;
因为计量单位表的ID是唯一,而商品档案表中的计量单位ID不唯一!
明白了吗?