请使用计算字段.(最好使用infopower的wwdbGrid)

解决方案 »

  1.   

    我用的就是wwdbgrid,该怎么来?我只会用这东西来查询与统计,不知道运算在哪里?
      

  2.   

    在QUERY的beforepost事件中处理
    实得工资:=各条记录的基本工资+奖金+补贴-扣款;
    至于%:收入*税率% like 收入*税率/100
      

  3.   

    我有wwdbgrid,该怎么来?我只会用这东西来查询与统计,不知道运算在哪里?
      

  4.   

    procedure TForm1.Table1BeforePost(DataSet: TDataSet);
    begin
      DataSet['实得工资'] :=
         DataSet.FieldByName('基本工资').AsFloat + 
         DataSet.FieldByName('奖金').AsFloat +
         DataSet.FieldByName('补贴').AsFloat +
         DataSet.FieldByName('扣款').AsFloat;
    end;
      

  5.   

    哦,原来是这样的。DataSet.FieldByName('补贴').AsFloat +//这里应该是“-”吧?
        DataSet.FieldByName('扣款').AsFloat;
    那乘除同理,只要改一下运算符就行了?如:
    begin
      DataSet['实得工资'] :=
        DataSet.FieldByName('基本工资').AsFloat + 
        DataSet.FieldByName('奖金').AsFloat +
        DataSet.FieldByName('补贴').AsFloat -
        DataSet.FieldByName('扣款').AsFloat *
        DataSet.FieldByName('税率').AsFloat ;//税率是%号的,不过这样会不会是对上面所有的和进行相乘了?若是想只对其中一项相乘又是怎么写呢?就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?是3*5+7-7、还是3*(5+7-7)这种?
    end;
      

  6.   

    1.先在Table控件中加入计算字段
    2.再在OnCalefiled 事件中加入你的如何计算的代码
       细节请慢慢琢磨
      

  7.   

    在双击TTable或TQuery控件,在fields里加一计算字段。
      

  8.   

    wangxd1976(西门吹雪) 我想给你8分,但系统就是不肯把你的分加进去,总说我少8分,总分不是45,没办法,再不行的话就只能不给你了。
      

  9.   

    可以在DBGrid中的FieldChang等事件中加入你的计算代码。
    在计算代码中,可以使用数据源的数据集属性!
      

  10.   

    //re:
    //  DataSet['实得工资'] :=
    //    DataSet.FieldByName('基本工资').AsFloat + 
    //    DataSet.FieldByName('奖金').AsFloat +
    //    DataSet.FieldByName('补贴').AsFloat -
    //    DataSet.FieldByName('扣款').AsFloat *
    //    DataSet.FieldByName('税率').AsFloat ;
    //税率是%号的,不过这样会不会是对上面所有的和进行相乘了?
    //若是想只对其中一项相乘又是怎么写呢?
    //就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?
    //是3*5+7-7、还是3*(5+7-7)这种?'税率'是string的话就把'%'给干了
    用StrToFloat(DataSet.FieldByName('税率').AsString) * 0.01
      就是乘一项啊
    3*5+7-7
      

  11.   

    //re:
    //  DataSet['实得工资'] :=
    //    DataSet.FieldByName('基本工资').AsFloat + 
    //    DataSet.FieldByName('奖金').AsFloat +
    //    DataSet.FieldByName('补贴').AsFloat -
    //    DataSet.FieldByName('扣款').AsFloat *
    //    DataSet.FieldByName('税率').AsFloat ;
    //税率是%号的,不过这样会不会是对上面所有的和进行相乘了?
    //若是想只对其中一项相乘又是怎么写呢?
    //就是3*5+7-7,而不是3*(5+7-7)。刚才上面的是哪一种?
    //是3*5+7-7、还是3*(5+7-7)这种?'税率'是string的话就把'%'给干了
    用StrToFloat(DataSet.FieldByName('税率').AsString) * 0.01
      就是乘一项啊
    3*5+7-7
      

  12.   

    要这么复杂吗?你到书店去看看SQL的语法书,上面有SQL关于字段运算的语法,你把他们拼一拼就好了。多看书把
      

  13.   

    有一点没有说清,DBGRID只是容器,它是数据库的外层,在这里你找到了语法,其语法还是得写在GRID的SQL属性或是TABLE的过滤器,两个的用法差不多,但还是有区别。多看看书比人家教你具体怎么写好
      

  14.   

    自已写一个控件不就行了,我有这种想法,请大家支持,我的EMAIL是[email protected].
      

  15.   

    在delphi demo 中有一個定單例子用了運算字段,看一看就明白了(不是在dbgrid中實現的),用運算字段(在數據模塊中找)
      

  16.   

    双击 Table 控件,弹出一个字段编辑框,单击右键,选择 New Field 新建一个合计字段。
    对合计字段进行编辑就行。
      

  17.   

    yhec(^0^) 与Apollo47() 已经讲了,如你还不明白,我将具体做法教你:
    DbGrid是感知控件,它通过TDataSource感知Ttable
    因此你应在Ttable实现
    第一步:
    1、点TTable,弹出Fields Editor...
    2、点右键,选New Field,弹出编辑窗
    3、起一新字段名称:如实得工资,在type选对字段类型如Float
    4、在Filed Type 中选calculated
    5、点确认
    下一步:
    1、TTable的属性中AutoCalcFields选True
    2、在TTable的Event页的OnCalcFields处写代码(点击)
    3、代码为
    Table1实得工资.Value := Table1基本工资.Value +Table1奖金.Value +Table1补贴.Value -Table1扣款.Value OK!!!