我在报表中要打印一人计算值. 例如:金额=单价*数量. 数据表里只有单价和金额两个字段. 
 我在rave里的Detail区放在一个 DataText, 它的OnGetText写
     Value:=floattostr(dataview1.Fieldbyname('price').asfloat*dataview1.Fieldbyname('qty').asfloat); 打印时出错.
 
 请教各位如何实现!!!!

解决方案 »

  1.   

    另外, 如果某一字段类型是: boolean , 打印显示是另外的值, 如: True表示'男', False表示'女', 又如何实现!!!
      

  2.   

    把那个datatext的ongettext里的取值取相对应的数据控件里的数据试试。
    (不用fieldbyname...)
    比如price对应的datatext控件为price,qty对应的为qty.
    试试:
     self.value:=floattostr(strtofloat(price.text)*strtofloat(qty.text))。至于第二个问题,我往往是在SQL里得到一个相对应的字段。那样就尽量避免了
    对RAVE的控制。
      

  3.   

    在前台用计算字段
    在SQL中也可以
    为什么一定要这么复杂的写到Rave里面第二个问题也是一样
    前台可以用SetText中完成
    后台可以用SQL语句中的Case 完成
    SQLServer直接支持Select Case
    Oracle可以用Decode
      

  4.   

    第一个问题为什么不在前台写SQL的原因:前台用不着显示金额、单价, 只在打印时显示; 这样不在前台做的目的就是提高速度。
      单价(price)和数量(qty)不是在同一个表的。取单价是在Rave中通过关连另外的DataView得来的(关连的关键字段只有一个).
      由此提出另一个问题:如果关连的关键字段有二个或以上, price的值在Rave中如何取得. 金额还能计算出来吗!!!
      

  5.   

    第二个问题我试出来了应这样写:
      If DataText1.text='True' Then
         Self.Value:='男'
      End If   If DataText1.text='False' Then
         Self.Value:=女'
      End If 注意:结尾是用 End If(中间有空格),不能用Else.
      

  6.   

    支持
    xiaocuo_zrf(刀未锋)大侠。
      

  7.   

    感谢ewindows98(手机)大侠。
    学知识了。那这样的话它的语法还颇有点象是foxpro.
    倒是未曾想到,我说怎么乱试都出不来。
      

  8.   

    计算可以在主程序里实现,然后再在rave里实现报表
      

  9.   

    在Rave 中关联, 如果关连的关键字段有二个或以上如何实现!, 没有人碰到过这个问题吗!!!