窗口中有一个ADOQuery,SQL如下:Select a.Warehouse,b.Descript,Sum(a.Qty) as qty,Sum(a.Qty) as ReQty
  From trans a Join Warehouse b on a.Warehouse = b.Code
  Where a.TxnDate Between :BeginDate And :EndDate And
  Group by a.WareHouse,b.Descript刷出数据后,想在DBGrid中ReQty一栏写入数量,但是行一变动后,此列值又恢复原值,如何解决此问题啊?我的原意是想在一个DBGrid中,用户手修改ReQty的值,最后用以比较ReQty和Qty两栏的值,不一致的写入到另一张数据表中。

解决方案 »

  1.   

    本人用PB用惯了,喜欢在GRID中让用户操作,也不知上述方法在DELPHI中是不是行不通。我请教过用DELPHI的人,他说用ADOQUERY时,刷新的数据要对应到后到数据表做更新,所以如果不是可更新的列,用户是不能更改的,所以写入的值要恢复。我是初学DELPHI,希望高手给予指导。
      

  2.   

    没有主从表,就一张单表trans表,上面的SQL中与Warehouse做关联只是为了筛选合适的数据。
      

  3.   

    我用的是delphi5,我试了一下,如果DataSource 直接连AdoQuery,修改合计值 报错,但我用clientdataset 连则没有问题。
      AdoQuery1.Sql.Text := sqlstring;
      AdoQuery1.Open ;
      AdoQuery1.FieldByName('ReQty').ReadOnly := False;
      ClientDataSet1.Open;
      ClientDataSet1.FieldByName('ReQty').ReadOnly := False ; 
    只要不Update,不会报错。