请问我如何将数据库中字段值进行计算后 显示在Grid中比如:tmp
   id      Price1   Price2.....
    1       10        20
    2       12        23
    3       9         18我想显示的值为 price1*1.2   Price2*1.4   该怎么写呀?用什么事件可以在显示之前将值进行计算,然后再显示  (最好能举个 TcxGrid 的例子)
   
   ADOQuery1.sql.add('select * from tmp');
   ADOQuery1.active:=True;
   .......

解决方案 »

  1.   

    ADOQuery1.sql.add('select ID,Pirce1*1.2,Price2*1.4 from tmp');
       ADOQuery1.active:=True;
      

  2.   

    呵呵,sql语句就可以直接计算的,你和原来一样掉用sql语句就行了,让数据库去做计算
      

  3.   

    比如  Cate1(Prise1)
    其实 我还想知道 控制 Grid的一些知识  呵呵  求解呀~~~
      

  4.   

    id      Price1   Price2   name
     1       10        20      aa
     2       12        23      bb
     3       9         18      cc如果name 是字符串  我想 在name 前加个 "_"
    这样显示:  _aa  
               _bb 
               _cc
    该怎么写呢?
      

  5.   

    dbgrid只是负责用表格显示数据并和数据源保持联系
    你如果想改变其中显示的值或者字段名,最好用query的sql中的select语句选择并生成一个数据
    源,那样你想显示什么内容都随便你。
    改变字段名称有几种方法:
    一、如果你知道并且认定你需要显示的一定不会在将来改变的话,你可以在设计期改变dbgrid的
    列标题,好象是什么coum。。的,记不住了。可是那样有很大的局限性,也就是将来不好改变或者
    一旦字段名称该了就会报告没有这个字段的错误,也就是在设计期就已经把列标题(包含里面的数据)
    和表内容绑定了。那样程序一旦运行就不好改变了(至少目前我还没有找到比下面更好的方法)
    二、采用下面的方式:
    select name1 as myname form table1.
    name1为字段名,myname为你想要显示的列标题。注意在设计期最好把dbgrid中所有的字段设置取消,
    也就是看起来只有一行一列的样子。
    如果你要计算的话,用下面的方式
    select (name1*0.2+name2)*name3 as myname form table1.
      

  6.   

    如果已经有数据源并且想计算的话
    要么用sql在选择(在中间计算)一遍
    要不可以循环一下
    with table1 do 
    begin
    table1,first;
    while not eof do
    begin
    end;
      

  7.   

    var
    i:integer;
    begin
    with table1 do 
    begin
    first;
    while not eof do
    begin
    i:=i+fielvaulebyname(['dd']);
    next;
    end;
    end;
    lable1.caption:=inttostr(i);
    end;