本文整理自网络,侵删。
//引用单元:TADOQuery----------ADODBTppDBPipeline-----------ppDBPipeTDataSource-----------DBTppreport-----------ppReportTppDesigner-----------ppEndUsr//打印调用procedure TfrmMain.N1Click(Sender: TObject);begin strsql := ' select top 1 * from ZY_BRXXK ' + ' select top 1 * from YY_YBFLK ' + ' select top 1 * from ZY_BRSYK ' + ' select top 1 * from ZY_BRXXK ' + ' select top 1 * from ZY_BRXXK '; dm.print(strsql,'zyb_brxxcx_temple.rtm');end;//打印函数声明//TADOQuery多结果集打印procedure TDM.Print(asql, strMb: string); procedure QueryToPrint(aAdoQuqery :TADOQuery;aTemplateName :string); var aAdoDataSet :TADODataSet; i,j :Integer; appDBpipeLine :TppDBPipeline; aDataSource :TDataSource; ppDBPipleline1 :TppDBPipeline; // raCodeModule1:TraCodeModule; isMasterPipeline :Boolean; ppreportTmp: Tppreport; //报表控件 ppDesignerTmp: TppDesigner; begin ppreportTmp := Tppreport.Create(Self); ppDesignerTmp:= TppDesigner.Create(Self); i :=0; isMasterPipeline :=True; if Assigned(ppDBPipleline1) then begin FreeAndNil(ppDBPipleline1); end; //raCodeModule1:=TraCodeModule.Create(nil); ppDBPipleline1 :=TppDBPipeline.Create(self); ppDBPipleline1.Name :='BDEPipeline1'; //为了和外挂报表中一致,因此此处Name属性不可修改 aAdoDataSet :=TADODataSet.Create(self); aAdoDataSet.Recordset :=aAdoQuqery.Recordset; while aAdoDataSet.Recordset<>nil do begin if isMasterPipeline then begin aDataSource :=TDataSource.Create(self); ppDBPipleline1.DataSource :=aDataSource; ppDBPipleline1.DataSource.DataSet :=aAdoDataSet; end else begin aDataSource :=TDataSource.Create(self); appDBpipeLine :=TppDBPipeline.Create(self); appDBpipeLine.DataSource :=aDataSource; appDBpipeLine.DataSource.DataSet :=aAdoDataSet; end; aAdoDataSet :=TADODataSet.Create(self); aAdoDataSet.Recordset :=aAdoQuqery.NextRecordset(j); if not isMasterPipeline then begin i :=i+1; appDBpipeLine.Name :='p_ppbdepipeline'+Inttostr(i); //为了和外挂报表中一致,因此此处Name属性不可修改 end; isMasterPipeline :=False; end; ppreportTmp.DataPipeline :=ppDBPipleline1; ppreportTmp.Template.FileName :='c:\'+aTemplateName;//模板路径 if not FileExists('c:\'+aTemplateName) then begin ppDesignerTmp.Report := ppreportTmp; ppDesignerTmp.ShowModal; end else begin ppreportTmp.Template.LoadFromFile; if true then//预览 begin ppDesignerTmp.Report := ppreportTmp; ppDesignerTmp.ShowModal; end else begin ppreportTmp.Print; end; end; ppDBPipleline1.Free; ppDBPipleline1 :=nil; //raCodeModule1.Free; //raCodeModule1:=nil; for i:=self.ComponentCount -1 downto 0 do begin if (Pos('p_ppbdepipeline',self.Components[i].Name)>0) and (Self.Components[i] is TppDBPipeline) then begin appDBpipeLine :=TppDBPipeline(self.Components[i]); appDBpipeLine.DataSource.DataSet.Free; appDBpipeLine.DataSource.DataSet :=nil; appDBpipeLine.DataSource.Free; appDBpipeLine.DataSource :=nil; appDBpipeLine.Free; appDBpipeLine :=nil; end; end; ppreportTmp.Free; ppDesignerTmp.Free; end;var PrintTempleate :string; strsql:string; qryTemp: TADOQuery; username, password, drivename,servername, databasename: string;begin qryTemp:=TADOQuery.Create(application); qryTemp.Active:=False; //ztapp.ztserver.getserverinfo('dsquery', servername, username, databasename, password, drivename); //多个打印结果时用 ADO 控件 qryTemp(赋值mssql的数据库连接) qryTemp.ConnectionString :='Provider=SQLOLEDB.1;Password='+password +';Persist Security Info=True;User ID='+username+';Initial Catalog='+databasename+';' +'Data Source='+servername; strsql:= asql; PrintTempleate :=strMb;// if not FileExists(ztapp.ReportTemplatePath+strMb) then// begin// ShowMessage('文件:'+ztapp.ReportTemplatePath+strMb+'不存在');// Exit;// end; qryTemp.Active:=False; qryTemp.Close; qryTemp.SQL.Clear; strsql:= strsql +' set QUOTED_IDENTIFIER OFF select 'XXXX' as [当前操作员],"' +FormatDateTime('yyyy-mm-ddhh:mm:ss',Now)+'YYYY' as [当前操作员科室] '; qryTemp.SQL.Add(strsql); try qryTemp.Open; except showmessage('执行SQL'+strsql+'异常!'); Exit; end; if qryTemp.Fields[0].AsString ='F' then begin showmessage(qryTemp.Fields[1].AsString); Exit; end; QueryToPrint(qryTemp,PrintTempleate); qryTemp.Free;end;
来源:https://blog.csdn.net/weixin_41660162/article/details/79828210
相关阅读 >>
Delphi的tservice 服务路径获取 dll中获取文件路径
Delphi idhttp最简洁的修改和取得cookie例子
更多相关阅读请进入《Delphi》频道 >>