technofantasy

博客园 首页 新随笔 联系 订阅 管理
  22 Posts :: 16 Stories :: 62 Comments :: 1 Trackbacks
VB 2005中拖放数据绑定确实很爽,只要在数据源中定义好数据源,然后从数据对象上拖放控件
到窗体就可以了。但是今天碰到一个问题,在库中有两个表:订单表和订单明细表。我在数据源
中创建了一个新的DataAdapter,它的Fill方法的SQL语句是:
SELECT     订单表.订单ID, 订单表.货主名称, 订单明细表.货物数量 * 订单明细表.货物单价 AS 总价格, 订单明细表.货物名称
FROM         订单表 INNER JOIN
                      订单明细表 
ON 订单表.订单ID = 订单明细表.订单ID

但是将这个DataAdapter的DataGridView拖放到窗体,运行后确出现这样的错误:
"Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints."
但是上面的SQL语句在SQL Server中执行完全没问题,想了半天,后来看了看数据源的xsd文件,
看到有这样的约束:
    <xs:unique name="Constraint1" msdata:PrimaryKey="true">
      
<xs:selector xpath=".//mstns:订单表" />
      
<xs:field xpath="mstns:订单ID" />
    
</xs:unique>

会不会是这样的问题呢?将上面的SQL换一下:
SELECT     订单明细表.订单ID, 订单表.货主名称, 订单明细表.货物数量 * 订单明细表.货物单价 AS 总价格, 订单明细表.货物名称
FROM         订单表 INNER JOIN
                      订单明细表 
ON 订单表.订单ID = 订单明细表.订单ID

果然运行通过了,数据约束有时候还真是麻烦,因为有了对订单表.订单ID的约束,因此前面的SQL
查询出来的结果订单表.订单ID字段值有重复就会报错,如果换成订单明细表.订单ID,因为没有约束
所以就没有问题了。
posted on 2006-08-16 23:31 陈锐 阅读(235) 评论(1)  编辑 收藏 所属分类: 杂类

Feedback

我的问题是
SELECT E_ID, E_SerialNum, E_Kind, E_OutDate, E_StartTime, E_LocateUnit
FROM EM_Equip
WHERE (E_LocateUnit = @UnitID) 就没有问题,

SELECT E_ID as 序号, E_SerialNum as 编号, E_Kind as 类别, E_OutDate as 日期1, E_StartTime as 日期2, E_LocateUnit as 所在地
FROM EM_Equip
WHERE (E_LocateUnit = @UnitID)
就出现
"Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints."
错误,日
  回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-08-21 15:07 编辑过
 
另存  打印