组件:adodataset,dbedit,dbgridadodataset中commandtext:select product.* ,producttype.name  as typename from Product inner join producttype on product.producttypeid=producttype.id
locktype=ltBatchOptimistic很简单,dbgrid显示两个表的记录,其中typename字段只是用来显示;我的目标是修改主表product里面的内容。
现在是可以插入记录,但不能修改。请高手帮一下忙。这里120分,加上http://community.csdn.net/Expert/topic/4496/4496985.xml?temp=.6410944中的80分,一起结帐。

解决方案 »

  1.   

    把你的代码贴出来,更新时有没有错误提示,在保存最好用
    TException来捕捉提交时的错误。
      

  2.   

    没有什么代码,就
    ADODataSet1.UpdateBatch  ; 一个语句而已错误提示:缺少更新或刷新的键列信息
      

  3.   

    这应该没有什么问题。
    提示这个错误应该是你运行了adodataset.refresh
    就会提示这个错误。
    解决办法,可以在更新表中建立一个主键或
    刷新时用先close, 后open.
      

  4.   

    最好临时生成一个adocommand实例,然后使用这个实例去执行更新数据库的操作,然后再刷新界面。
    代码片断:
    adocommand.ExecuteSql('update ... set ...');
      

  5.   

    你用你写的这个SQL,在服务器上建立一个视图,在服务器上看看能不能更新,如果视图不能更新,就不关客户端程序的什么事了,你的两个表中,肯定有表没有定义主键,否则不会有问题