举例说明:
     f_ydsl    f_jcsl    f_ydbl
      50          50       100
      60          60       100
      0            0         
      40          40       100
小计:150         150      100
  
其中 f_ydbl=100*f_ydsl/f_jcsl
但有时候f_jcsl=0procedure Memo41OnBeforePrint(Sender: TfrxComponent);
begin
  IF (<frxDBDatasetA."F_jcsl">) >0  THEN
  memo41.text:='100*[SUM(<frxDBDatasetA."F_YDSL">,MasterData1)]/[SUM(<frxDBDatasetA."F_JCSL">,MasterData1)]';end;但 f_ydbl小计 出来的数据是100*150/150,比率应该是100呀,请大家指点,谢谢:)))

解决方案 »

  1.   

    procedure Memo41OnBeforePrint(Sender: TfrxComponent);
    begin
      IF (<frxDBDatasetA."F_jcsl">) >0  THEN
      memo41.text:='[100*(<frxDBDatasetA."F_YDSL">/(<frxDBDatasetA."F_JCSL">)]';end;
    这样数据能计算出来,但我要的是合计数
      

  2.   

    修正:
     memo41.text:='[100*(<frxDBDatasetA."F_YDSL">/<frxDBDatasetA."F_JCSL">)]';
     这样数据能计算出来,但我要的是合计后相除的数
      

  3.   

    试试:
    memo41.text:='[100*[SUM(<frxDBDatasetA."F_YDSL">,MasterData1)]/[SUM(<frxDBDatasetA."F_JCSL">,MasterData1)]]'
      

  4.   

    to:xxmmmx运行后提示:“表达式错误,SUM未声明”
      

  5.   

    直接在memo41中写
    [IIF(<SUM(<frxDBDatasetA."F_JCSL">,MasterData1)> <> 0 ,format('%0.1f',[SUM(<frxDBDatasetA."F_YDSL">,MasterData1)/SUM(<frxDBDatasetA."F_JCSL">,MasterData1)*100]),'')]
      

  6.   

    稍微改动了一哈
    [IIF [SUM(<frxDBDatasetA."F_JCSL">,MasterData1)]<>0 ,format('%0.1f',[SUM(<frxDBDatasetA."F_YDSL">,MasterData1)/SUM(<frxDBDatasetA."F_JCSL">,MasterData1)*100])]
    提示 momo41:error in expoession'IIF [SUM(<frxDBDatasetA."F_JCSL">,MasterData1)]<>0 ,format('%0.1f',[SUM(<frxDBDatasetA."F_YDSL">,MasterData1)/SUM(<frxDBDatasetA."F_JCSL">,MasterData1)*100])':';'expected
      

  7.   

    测试:[IIF(<SUM(<frxDBDatasetA."F_JCSL">,MasterData1)><>0 ,10/2,0)]正常[IIF(<SUM(<frxDBDatasetA."F_JCSL">,MasterData1)><>0 ,<SUM(<frxDBDatasetA."F_YDSL">,MasterData1)/SUM(<frxDBDatasetA."F_JCSL">,MasterData1)>,0)]
    不出数据