有两个表order(orderid,ordername,totalprice), orderdetail(orderid,productid,productname,price) 已经建立一对多 
关联(orderid). 用VB.net建立一个窗体, 用于主表和明细表的数据录入及更新. 
在窗体上增加两个sqldataadapter,分别选择order和orderdetail表, 并生成数据集,在DATASET中建立关联(orderid) 主表中:ORDERID,ORDERNAME 绑定在两个TEXTBOX文本框中,用于接受用户的输入,totalprice接受明细表中price 
的汇总值. 
明细表绑定到一个DATAGRID控件, datasource:dsorder; datamember:order.orderorderdetail建立的关联名称 问题: 在主表中新增一个记录,用户录入orderid和ordername后,进入明细表的录入,用户录入productid, productname, price后,提示 
“明细orderID列不允许空值,要更正该值吗?” 是什么原因? 
用于连接主表的明细orderID如果输入跟主表一样的orderID时提示“ForeignKeyconstraint 要求在交叉表中存在子键值。要更正该值吗?” 只有录入主表中的orderid和ordername后, 先更新主表数据源,才可以编辑更新明细表,这是为什么? 

解决方案 »

  1.   

    ???因为关联是建在数据源(DataSet)里,所以也就只有在数据源的主表里添加了数据之后才能编辑更新明细表
      

  2.   

    是不是要先删除关联,输入数据后(Detail),再建立关连?
      

  3.   

    多表操作,
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspx
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  4.   

    这方面建议楼主看<ado.net>之类的书。
      

  5.   

    同意秋枫
    这方面建议楼主看<ado.net>之类的书。
      

  6.   

    你的文章我很久就看过了,你的两篇文章写得很好,但你的文章中只是对多表的浏览和更新
    做了讲解,唯独缺少对数据的增加操作。就以你的
    [http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx]这篇文章来说
    如果你在[客户表]中新增数据,但在行焦点不发生变化的情况下,根本无法在订单表中
    添加数据,只有[客户表]的行焦点发生变化才可以。不信你试试,用endcurrentedit之
    方法也不能代替行焦点发生变化!。其实我的问题就是在客户表的行焦点不发生变化的情况下,怎样才能录入订单表中的数据!!!!!!!!!!
      

  7.   

    to zhzuo(秋枫)你的文章我很久就看过了,你的两篇文章写得很好,但你的文章中只是对多表的浏览和更新
    做了讲解,唯独缺少对数据的增加操作。就以你的
    [http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx]这篇文章来说
    如果你在[客户表]中新增数据,但在行焦点不发生变化的情况下,根本无法在订单表中
    添加数据,只有[客户表]的行焦点发生变化才可以。不信你试试,用endcurrentedit之
    方法也不能代替行焦点发生变化!。其实我的问题就是在客户表的行焦点不发生变化的情况下,怎样才能录入订单表中的数据!!!!!!!!!!