有如下代码:
  Crpe.ReportTitle:='销售订单';
  Crpe.ReportName:=GlobalVar.AppPath+'\Reports\crp_SalesOrder.rpt';
  Crpe.ParamByName('@sOrder#','').ShowDialog:=False;
  Crpe.ParamByName('@sOrder#','').PromptValue:=Self.sOrderID;
  Crpe.ParamByName('@sOrder#','').CurrentValue:=Self.sOrderID;
  Crpe.Refresh;
  Crpe.Execute;
每次执行,都要弹出对话框要求输入参数值,虽然输入框默认的参数值已经是传过去的参数值了, 可是它非得让确认一次, 烦死了. 请问有谁能有办法解决?
问题主要出在Crpe.Refresh语句上, 可是如果不要这条语句, 报表根本就不能正确显示.

解决方案 »

  1.   

    self.Crpe1.ParamFields.AllowDialog:=false;
      

  2.   

    谢谢(风清飘).我按你的方法去做的时候,的确不再弹出要求输入参数的提示窗口了, 可是不论是哪张订单, 显示报表时都是按我在设计报表时输入的订单号的内容, 也就是说,无论在哪一条记录下预览数据, 显示的都是同一内容. 请问这怎么解决? 我的代码如下:
      Crpe.ReportName:=GlobalVar.AppPath+'\Reports\crp_SalesOrder.rpt';
      Crpe.ParamFields.AllowDialog:=False; //这句是按你所说的加上去的
      //Crpe.ParamByName('@sOrder#','').ShowDialog:=False; //这句是我原来用的
      Crpe.ParamByName('@sOrder#','').PromptValue:=Self.sOrderID;
      Crpe.ParamByName('@sOrder#','').CurrentValue:=Self.sOrderID;
      Crpe.Refresh;
      Crpe.Execute;
      

  3.   

    问题已经解决, 总结一下:
      Crpe.ReportName:=GlobalVar.AppPath+'\Reports\crp_SalesOrder.rpt';
      Crpe.ParamFields.AllowDialog:=False; //这句是按你所说的加上去的
      //Crpe.ParamByName('@sOrder#','').ShowDialog:=False; //这句是我原来用的
      Crpe.ParamByName('@sOrder#','').PromptValue:=Self.sOrderID;
      Crpe.ParamByName('@sOrder#','').CurrentValue:=Self.sOrderID;
      //Crpe.Refresh; //去掉这条语句就行了, 否则, 预览报表时,永远都是显示设计时的数据!!! 原因未明
      Crpe.Execute;