我已经做好了查询功能,想打印查询结果,该怎么做,请指教啊!
我在打印按钮中的代码如下: 
procedure TFm_rkcx.BitBtn_dyClick(Sender: TObject);
begin
  if DBG_rkcx.DataSource=DM_sjhcgl.DaSo_Qry_View then//这个查询语句是正确的,能够实现
    begin
      With DM_sjhcgl.ADOQry_Print do
      begin
        close;
        SQL.Clear;
        SQL.Add(constSelect_mxdy +' where 入库日期  between :p0 and :p1' + strWh + constOrder);
        parameters[0].Value:=DTP_qsrq.date;
        parameters[1].Value:=DTP_jsrq.date;
        ExecSQL;
      end;
      Fm_rkcx_dy.QReport.Preview;//程序一运行到这里就报错。我把上面的查询语句删除报同样的错
    end;
end;
报的错误为: Access violation at address 00519342 in module 'Psjhcgl.exe'.Read of address 000002F8
不能进入打印预览界面
我不知道是不是打印的数据源或者打印查询的代码写的位置不对产生的错误啊,请大虾们一定帮帮忙啊,这个问题困扰我很久了!
我的打印界面没有放置ADO控件,数据源是从一个公用的数据模块里获得的,查询语句是写在查询窗体,没有写到打印窗体,在打印窗体的OnPreview事件中我加入了下面的代码,想把数据源动态地加入。
procedure TFm_rkcx_dy.QReportPreview(Sender: TObject);
begin
  Fm_rkcx_dy.QRText_rkrq.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('入库日期').AsString;
  Fm_rkcx_dy.QRText_pm.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('品名').AsString;
  Fm_rkcx_dy.QRText_gg.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('规格').AsString;
  Fm_rkcx_dy.QRText_dw.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('单位').AsString;
  Fm_rkcx_dy.QRText_dj.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('单价').AsString;
  Fm_rkcx_dy.QRText_je.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('金额').AsString;
  Fm_rkcx_dy.QRText_cs.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('厂商').AsString;
  Fm_rkcx_dy.QRText_ph.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('批号').AsString;
end;
请帮我看下哈,错误在哪里啊,该如何实现这样的功能啊!谢谢!谢谢!

解决方案 »

  1.   

    qrtxet.dataset:=  //数据源 在哪呢?   
    QRband.Bandtype:=RBtitle;//设置表头 表尾 ... 你设置了么? 
          
      

  2.   

    我把代码改成了
    procedure TFm_rkcx.BitBtn_dyClick(Sender: TObject);
    begin
      With DM_sjhcgl.ADOQry_Print do
          begin
            close;
            SQL.Clear;
            SQL.Add(constSelect_mxdy +' where 入库日期  between :p0 and :p1' + strWh + constOrder);
            parameters[0].Value:=DTP_qsrq.date;
            parameters[1].Value:=DTP_jsrq.date;
            ExecSQL;
            Active:=true;
          end;
     Fm_rkcx_dy.QReport.DataSet:=DM_sjhcgl.ADOQry_Print;//运行到这里的时候报同样的错误
     Fm_rkcx_dy.QRDBText1.DataField:=DM_sjhcgl.ADOQry_Print.fieldbyname('品名').AsString;
     Fm_rkcx_dy.QReport.Preview;
    end;
    在打印界面我设置了QReport的DataSet属性为DM_sjhcgl.ADOQry_Print
    请继续指教啊!谢谢了!