我想实现这样一个功能:delphi中dbgrideh我有一个表有三个字段
field1,field2,field3
我想在dbgrideh中先显示了这个表中的数据,
然后在dbgrideh中修改field1值,我想在field1的值一改动
它就自动把field3的值改为field1*field2的值,谢谢

解决方案 »

  1.   


    应该可以在DataSource1UpdateData里面写吧
      

  2.   

    1. 使用计算字段
    2. 在field1的onchang事件里面计算;
      

  3.   

    在DBGrid的数据源控件中,比如DataSet的afterpost事件里面写就可以了
      

  4.   

    您可以利用DBGridEh1ColExit事件ADODataSet1.Edit;
    ADODataSet1.FieldValues['字段3]:=ADODataSet1.FieldByName('字段1').AsFloat*ADODataSet1.FieldByName('字段2).AsInteger;
    ADODataSet1.post;
      

  5.   


    提示 unterminnated string
      

  6.   

    procedure TForm2.DBGrid1ColExit(Sender: TObject);
    var
    vjizhun:Double;
    begin
    vjizhun:=StrToFloat(trim(jizhun.Text));
    qry1.Edit;
    qry1.FieldValues['含税价']:=(qry1.FieldByName('无税价').AsFloat)*(1+(qry1.FieldByName('税率').AsFloat)/100);
    qry1.FieldValues['iunitprice_new']:= (qry1.FieldValues['无税价'])+('''+vjizhun+''');
    //qry1.FieldValues['含税价']:=1;
    qry1.Post;end;怎么一直提示不能将字符型转换为double
      

  7.   


    qry1.FieldValues['iunitprice_new']:= (qry1.FieldValues['无税价'])+('''+vjizhun+''');
    这一句您已经定义了vjizhun是double了,还用引号括起来干什么了,那会导致delphi把vjizhun看成是字符串。