我做了一个动态连接来自动生成报表,传递TDataSet类型的参数,但是动态创建TQRExpr时(实际上已经创建了),但是却显示不出计算结果(创建其他的比如TQRDBText都好用),这是为什么?我怀疑是不是和动态连接库的内存共享有关呢?向各位高手求教,怎么解决这个问题?

解决方案 »

  1.   

    你可能没有设置TQRExpr的Expression属性,或者设置不正确————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    我的设置是正确的,没有错误
    //ds是一个全局变量
    var
      ds:TDataSet;//
    procedure ReportSetting(AHandle:THandle;iAddress:integer;..);safecall;
    begin
      Application.Handle:=AHandle;
      ds:=TDataSet(iAddress);
      ......
      Form1:=TForm1.Create(application);
      Form1.QuickRep1.Preview;
      Form1.Free;
    end;//
    procedure TForm1.FormCreate(Sender: TObject);
    var
      qre:TQRExpr;
    begin
      QuickReport1.DataSet:=ds;
      ......
      qre:=TQRExpr.Create(self);
      qre.Master:=QuickReport1;
      qre.Parent:=QuickRep1.Bands.Summaryband;
      qre.AutoSize:=false;
      qre.Visible:=true;
      qre.Width:=100;
      qre.Left:=20;
      qre.Top:=8;
      qre.ResetAfterPrint:=true;
      qre.Expression:='sum(mSellAmt)';   //表达式是正确的  ....
    end;
    如果我把QuickReport1.DataSet和一个Form中创建的一个控件Query1连接,就会显示出计算结果,和这个变量连接就不能显示
      

  3.   

    qre.Master:=QuickReport1;
      qre.Parent:=QuickRep1.Bands.Summaryband
    很重要
      

  4.   

    把报表中reportoption设置成为两遍读取
      

  5.   

    请问 Sorder(剑客) 怎样把报表中reportoption设置成为两遍读取????????
      

  6.   

    var
      ds:TDataSet;有没有创建,或者给它付值