select a.resultid, a.rdate,a.sampleid,a.IID,a.itemTypeID,a.sambtype,a.Item,a.sState AS exce,a.iState,a.iValue,a.sValue,conc=case len(isnull(a.sValue,'')) when 0 then convert(char,a.iValue) else a.sValue end,isnull(convert(decimal(9,2),b.iRLow),0) as iRLow,isnull(convert(decimal(9,2),b.iRhigh),0) as iRhigh
from result a,item b 
where a.Tid=b.TID and a.item=b.item如上 这样一条sql语句得到的数据集,DBGrid显示主要显示a.item,value我可否在dbgrid中修改value值,后令ivalue或svalue=此值 然后通过数据集的方法更新修改谢谢大家了

解决方案 »

  1.   

    可以,你在数据集的value字段的AfterChange事件后,更新ivalue或svalue的值。不知你用的是D6以上的版本还是D5。如果是D5,它有TUpSQL控件,其中可以写UPDATESQL属情中的脚本。指定只更改哪些字段。如是D6以上的,它本身有属性可以设置更新的字段。如果不作这样的设置的话,它会更新所以字段的值的。
      

  2.   

    我试了一下 有两个问题
    1.value字段的值好像更本不能修改(计算字段的值不能修改???)2.我只想更新result表 不想更新item表,而用数据集的方法UpdateBatch去更新,就会同时更新2个表,然后就会出错了.
      

  3.   

    查了点资料 感觉好像ADO现在不支持多表查询,单表更新(三层结构可以,不过我的系统不是)