unit u_sys_frprint; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, dxExEdtr, bsDialogs, bsSkinShellCtrls, DB, ADODB, BusinessSkinForm, StdCtrls, Mask, bsSkinBoxCtrls, bsdbctrls, bsSkinCtrls, dxTL, dxDBCtrl, dxDBGrid, dxCntner, dxDBTLCl, dxGrClms, DBCtrls, XPMenu, Menus, ExtDlgs, ImgList, IdFTP,IdFTPCommon, frxChBox, frxOLE, frxDCtrl, frxCross, frxClass, frxADOComponents, frxRich, frxExportCSV, frxExportImage, frxExportMail, frxGZip, frxCrypt, frxDesgn, frxExportODF, frxExportPDF, frxExportXML, frxExportXLS, frxExportHTML, frxExportText, frxExportRTF, frxDBSet, Grids, DBGrids,IniFiles,IdAttachmentFile, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, frxBarcode; type Tfrm_sys_frprint = class(TForm) bsBusinessSkinForm1: TbsBusinessSkinForm; dxDBGrid1: TdxDBGrid; dxDBGrid1Column1: TdxDBGridMaskColumn; bsSkinPanel3: TbsSkinPanel; t_sys_report: TADOQuery; t_sys_report1: TDataSource; bsSkinInputDialog1: TbsSkinInputDialog; bsSkinDBEdit1: TbsSkinDBEdit; dxDBGrid1Column2: TdxDBGridCheckColumn; bsSkinPanel1: TbsSkinPanel; Label1: TLabel; DBEdit1: TDBEdit; Label2: TLabel; DBEdit2: TDBEdit; Button5: TButton; PopupMenu1: TPopupMenu; XPMenu1: TXPMenu; N1: TMenuItem; N2: TMenuItem; EXCEL1: TMenuItem; N3: TMenuItem; WORD1: TMenuItem; N4: TMenuItem; PDF1: TMenuItem; N5: TMenuItem; RTF1: TMenuItem; ImageList: TImageList; OpenDialog1: TOpenDialog; t_sys_report_employee: TADOQuery; bsSkinPanel2: TbsSkinPanel; bsSkinButton12: TbsSkinButton; bsSkinPanel4: TbsSkinPanel; bsSkinButton6: TbsSkinButton; bsSkinButton8: TbsSkinButton; bsSkinButton7: TbsSkinButton; bsSkinButton3: TbsSkinButton; bsSkinButton4: TbsSkinButton; bsSkinButton9: TbsSkinButton; bsSkinButton1: TbsSkinButton; bsSkinButton2: TbsSkinButton; bsSkinButton10: TbsSkinButton; bsSkinButton11: TbsSkinButton; bsSkinButton5: TbsSkinButton; t_sys_report_lei: TADOQuery; t_sys_reportfile: TADOQuery; t_sys_reportfile1: TDataSource; frxBMPExport1: TfrxBMPExport; frxJPEGExport1: TfrxJPEGExport; frxTIFFExport1: TfrxTIFFExport; frxRTFExport1: TfrxRTFExport; frxSimpleTextExport1: TfrxSimpleTextExport; frxHTMLExport1: TfrxHTMLExport; frxXLSExport1: TfrxXLSExport; frxPDFExport1: TfrxPDFExport; frxODSExport1: TfrxODSExport; frxODTExport1: TfrxODTExport; frxDesigner1: TfrxDesigner; frxCrypt1: TfrxCrypt; frxGZipCompressor1: TfrxGZipCompressor; frxMailExport1: TfrxMailExport; frxGIFExport1: TfrxGIFExport; frxCSVExport1: TfrxCSVExport; frxRichObject1: TfrxRichObject; frxReport1: TfrxReport; db: TfrxADOComponents; frxCrossObject1: TfrxCrossObject; frxDialogControls1: TfrxDialogControls; frxOLEObject1: TfrxOLEObject; frxCheckBoxObject1: TfrxCheckBoxObject; one_table_1: TfrxDBDataset; one_table_2: TfrxDBDataset; one_table_3: TfrxDBDataset; one_table_4: TfrxDBDataset; all_table_4: TfrxDBDataset; all_table_3: TfrxDBDataset; all_table_2: TfrxDBDataset; all_table_1: TfrxDBDataset; all_table_7: TfrxDBDataset; all_table_5: TfrxDBDataset; all_table_6: TfrxDBDataset; print_head: TfrxDBDataset; load_employee: TfrxDBDataset; t_sys_cust: TADOQuery; t_sys_cust1: TDataSource; load_cust: TfrxDBDataset; SaveDialog1: TSaveDialog; ds_sys_reporthead1: TDataSource; t_sys_reporthead: TADOQuery; all_table_8: TfrxDBDataset; all_table_9: TfrxDBDataset; N6: TMenuItem; N7: TMenuItem; frxXLSExport2: TfrxXLSExport; SMTP1: TIdSMTP; IdMsg: TIdMessage; mailsend1: TDataSource; frxBarCodeObject1: TfrxBarCodeObject; procedure bsSkinButton8Click(Sender: TObject); procedure bsSkinButton2Click(Sender: TObject); procedure bsSkinButton5Click(Sender: TObject); procedure bsSkinButton3Click(Sender: TObject); procedure bsSkinButton4Click(Sender: TObject); procedure bsSkinButton9Click(Sender: TObject); procedure bsSkinButton1Click(Sender: TObject); procedure bsSkinButton6Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure bsSkinButton7Click(Sender: TObject); procedure N1Click(Sender: TObject); procedure EXCEL1Click(Sender: TObject); procedure WORD1Click(Sender: TObject); procedure PDF1Click(Sender: TObject); procedure RTF1Click(Sender: TObject); procedure bsSkinButton10Click(Sender: TObject); procedure t_sys_reportAfterPost(DataSet: TDataSet); procedure bsSkinButton12Click(Sender: TObject); procedure t_sys_reportAfterOpen(DataSet: TDataSet); procedure t_sys_reportBeforeClose(DataSet: TDataSet); procedure t_sys_reportfileAfterInsert(DataSet: TDataSet); procedure t_sys_reportfileAfterPost(DataSet: TDataSet); function frxDesigner1SaveReport(Report: TfrxReport; SaveAs: Boolean): Boolean; function frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant; procedure FormCreate(Sender: TObject); procedure Button5Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure bsSkinButton11Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end; var frm_sys_frprint: Tfrm_sys_frprint; implementation uses u_main, u_data_share, my_sys_function, u_code_send_head,u_op_seae; {$R *.dfm} procedure Tfrm_sys_frprint.bsSkinButton8Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能打印输出!'); exit; end; if t_sys_reportfile.fieldbyname('report').IsNull then begin showmessage('没有要预览的格式!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; frxReport1.Print; except showmessage('打印输出失败!'); end; if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_report.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_report['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_report['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; end; end; procedure Tfrm_sys_frprint.bsSkinButton2Click(Sender: TObject); var book1:Tbookmark; str:string; inifile1:TIniFile; begin try t_sys_report.DisableControls; book1:=t_sys_report.GetBookmark; inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); str:=t_sys_report.fieldbyname('报表名称').asstring; t_sys_report.First; while not t_sys_report.eof do begin if t_sys_report.fieldbyname('报表名称').asstring=str then begin t_sys_report.edit; t_sys_report['是否默认']:=1; t_sys_report.post; inifile1.EraseSection(t_sys_report.fieldbyname('报表属性').asstring); inifile1.WriteInteger(t_sys_report.fieldbyname('报表属性').asstring,t_sys_report.fieldbyname('报表属性').asstring,t_sys_report.fieldbyname('CH_ID').AsInteger); end else begin t_sys_report.edit; t_sys_report['是否默认']:=0; t_sys_report.post; end; t_sys_report.next; end; finally inifile1.free; t_sys_report.GotoBookmark(book1); t_sys_report.EnableControls; end; end; procedure Tfrm_sys_frprint.bsSkinButton5Click(Sender: TObject); begin SelectedMulti:=False; close; end; procedure Tfrm_sys_frprint.bsSkinButton3Click(Sender: TObject); begin if t_sys_report.IsEmpty then begin t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select top 0 * from t_sys_report '); t_sys_reportfile.Open; end else begin t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; end; t_sys_reportfile.Insert; t_sys_reportfile['报表名称']:=bsSkinInputDialog1.InputBox('更改名称','新的名称',t_sys_reportfile.fieldbyname('报表名称').asstring); t_sys_reportfile.post; { if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_reportfile.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_reportfile['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_reportfile['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; end; } frxReport1.DesignReport; end; procedure Tfrm_sys_frprint.bsSkinButton4Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有要设计的格式!'); exit; end; try if not t_sys_reportfile.fieldbyname('report').IsNull then begin try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; end; frxReport1.DesignReport; except showmessage('格式设计失败!'); end; if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_reportfile.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_reportfile['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_reportfile['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; end; end; procedure Tfrm_sys_frprint.bsSkinButton9Click(Sender: TObject); begin if t_sys_report.isempty then begin showmessage('没有要删除的格式!'); exit; end; if application.MessageBox('您确定要删除格式吗?','警告:',MB_OKCANCEL)=IDOK then t_sys_report.delete; end; procedure Tfrm_sys_frprint.bsSkinButton1Click(Sender: TObject); begin if t_sys_report.isempty then begin showmessage('没有要更改名称的格式!'); exit; end; t_sys_report.edit; t_sys_report['报表名称']:=bsSkinInputDialog1.InputBox('更改名称','新的名称',t_sys_report.fieldbyname('报表名称').asstring); t_sys_report.post; end; procedure Tfrm_sys_frprint.bsSkinButton6Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then exit; if t_sys_reportfile.fieldbyname('report').IsNull then begin showmessage('没有要预览的格式!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.ShowReport; except showmessage('打印预览失败!'); end; if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_reportfile.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_reportfile['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_reportfile['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; end; end; procedure Tfrm_sys_frprint.FormShow(Sender: TObject); var inifile1:TIniFile; ch_id:Integer; begin if not if_open('170') then begin bsSkinButton3.Enabled:=false; bsSkinButton4.Enabled:=false; bsSkinButton9.Enabled:=false; bsSkinButton1.Enabled:=false; // bsSkinButton2.Enabled:=false; bsSkinButton10.Enabled:=false; // bsSkinButton11.Enabled:=false; end; // frm_data_share.t_sys_report_head.Requery(); // frm_data_share.t_load_employee.Requery(); if not t_sys_reporthead.IsEmpty then begin t_sys_reporthead.edit; t_sys_reporthead['台头TO']:=''; t_sys_reporthead['台头ATTN']:=''; t_sys_reporthead.post; end; if frm_sys_frprint.caption='海运出口单证' then bsSkinPanel2.Visible:=true; ch_id:=0; inifile1:=Tinifile.Create(ExtractFilePath(application.ExeName)+'main.ini'); ch_id:=inifile1.Readinteger(frm_sys_frprint.t_sys_report.fieldbyname('报表属性').asstring,frm_sys_frprint.t_sys_report.fieldbyname('报表属性').asstring,0); if ch_id<>0 then begin if t_sys_report.locate('CH_ID',ch_id,[])then begin t_sys_report.edit; t_sys_report['是否默认']:=1; // t_sys_report.post; end; end; // rd.XHD_help:=t_sys_report_lei.fieldbyname('报表说明').asstring; end; procedure Tfrm_sys_frprint.bsSkinButton7Click(Sender: TObject); var Pnt:Tpoint; begin Pnt:=bsSkinButton7.ClientToScreen(Point(0,bsSkinButton7.Height)); PopupMenu1.Popup(Pnt.x,Pnt.y); if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_report.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_report['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_report['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; end; end; procedure Tfrm_sys_frprint.N1Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; frxReport1.Export(frxJPEGExport1); except showmessage('存为文件失败!'); end; end; procedure Tfrm_sys_frprint.EXCEL1Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; frxReport1.Export(frxXLSExport1); except showmessage('存为文件失败!'); end; end; procedure Tfrm_sys_frprint.WORD1Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; frxReport1.Export(frxHTMLExport1); except showmessage('存为文件失败!'); end; end; procedure Tfrm_sys_frprint.PDF1Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; frxReport1.Export(frxPDFExport1); except showmessage('存为文件失败!'); end; end; procedure Tfrm_sys_frprint.RTF1Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; frxReport1.Export(frxRTFExport1); except showmessage('存为文件失败!'); end; end; procedure Tfrm_sys_frprint.bsSkinButton10Click(Sender: TObject); var template : TStream; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能打印输出!'); exit; end; if t_sys_reportfile.fieldbyname('report').IsNull then begin showmessage('没有要预览的格式!'); exit; end; try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; if SaveDialog1.Execute then frxReport1.savetofile(SaveDialog1.filename); except showmessage('另存格式失败!'); end; // GetNewData('t_sys_report','CH_ID','',t_sys_reportfile); { try IdFTP1:=TIdFTP.Create(application); with idftp1 do begin Username:='dongsheng'; Password:='zouwenkun'; Host:='218.57.11.18'; Connect; end; idftp1.Disconnect; update_jiandu; try if not assigned(frm_sys_print_down) then frm_sys_print_down:=tfrm_sys_print_down.Create (self); frm_sys_print_down.Caption:=frm_sys_print.Caption; frm_sys_print_down.ShowModal; finally frm_sys_print_down.free; frm_sys_print_down:=NIL; end; except showmessage('与下载服务器联机失败!!'); end; idftp1.free; } end; procedure Tfrm_sys_frprint.t_sys_reportAfterPost(DataSet: TDataSet); begin if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_report.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_report['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_report['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; end; end; procedure Tfrm_sys_frprint.bsSkinButton12Click(Sender: TObject); var str:widestring; begin if bsSkinButton12.caption='所有格式'then begin bsSkinButton12.caption:='近期格式'; t_sys_reportfile.close; t_sys_report.close; t_sys_report.sql.clear; t_sys_report.sql.add('select 报表名称,报表属性,是否默认,CH_ID from t_sys_report where 报表属性=:报表属性 order by 报表名称'); t_sys_report.Parameters[0].value:=frm_sys_frprint.caption; t_sys_report.open; t_sys_reportfile.Open; end else begin if not t_sys_report_employee.IsEmpty then begin t_sys_report_employee.first; while not t_sys_report_employee.eof do begin if t_sys_report_employee.fieldbyname('日期').AsDateTime>=date-30 then begin if str='' then str:=t_sys_report_employee.fieldbyname('CH_ID').asstring else str:=str+','+t_sys_report_employee.fieldbyname('CH_ID').asstring; end; t_sys_report_employee.next; end; str:=' and CH_ID in ('+str+')'; t_sys_reportfile.close; t_sys_report.close; t_sys_report.sql.clear; t_sys_report.sql.add('select 报表名称,报表属性,是否默认,CH_ID from t_sys_report where 报表属性=:报表属性 '+str+' order by 报表名称'); t_sys_report.Parameters[0].value:=frm_sys_frprint.caption; t_sys_report.open; t_sys_reportfile.Open; end else begin t_sys_reportfile.close; t_sys_report.close; t_sys_report.sql.clear; t_sys_report.sql.add('select 报表名称,报表属性,是否默认,CH_ID from t_sys_report where 报表属性=:报表属性 order by 报表名称'); t_sys_report.Parameters[0].value:=frm_sys_frprint.caption; t_sys_report.open; t_sys_reportfile.Open; end; bsSkinButton12.caption:='所有格式'; end; end; procedure Tfrm_sys_frprint.t_sys_reportAfterOpen(DataSet: TDataSet); begin // t_sys_reportfile.Open; end; procedure Tfrm_sys_frprint.t_sys_reportBeforeClose(DataSet: TDataSet); begin // t_sys_reportfile.Close; end; procedure Tfrm_sys_frprint.t_sys_reportfileAfterInsert(DataSet: TDataSet); begin t_sys_reportfile['报表属性']:=frm_sys_frprint.Caption; t_sys_reportfile['报表名称']:=frm_sys_frprint.Caption; t_sys_reportfile['报表内容']:='12311'; t_sys_reportfile['是否默认']:=false; end; procedure Tfrm_sys_frprint.t_sys_reportfileAfterPost(DataSet: TDataSet); var str:widestring; begin if frm_sys_frprint.caption='海运出口单证' then begin if not t_sys_report_employee.Locate('CH_ID',t_sys_reportfile.fieldbyname('CH_ID').asinteger,[])then begin t_sys_report_employee.insert; t_sys_report_employee['CH_ID']:=t_sys_reportfile['CH_ID']; t_sys_report_employee['报表属性']:=t_sys_reportfile['报表属性']; t_sys_report_employee['姓名']:=employee; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end else begin t_sys_report_employee.edit; t_sys_report_employee['日期']:=date; t_sys_report_employee.post; end; if bsSkinButton12.caption='所有格式'then begin if not t_sys_report_employee.IsEmpty then begin t_sys_report_employee.first; while not t_sys_report_employee.eof do begin if t_sys_report_employee.fieldbyname('日期').AsDateTime>=date-30 then begin if str='' then str:=t_sys_report_employee.fieldbyname('CH_ID').asstring else str:=str+','+t_sys_report_employee.fieldbyname('CH_ID').asstring; end; t_sys_report_employee.next; end; str:=' and CH_ID in ('+str+')'; t_sys_report.close; t_sys_report.sql.clear; t_sys_report.sql.add('select 报表名称,报表属性,是否默认,CH_ID from t_sys_report where 报表属性=:报表属性 '+str+' order by 报表名称'); t_sys_report.Parameters[0].value:=frm_sys_frprint.caption; t_sys_report.open; end else begin t_sys_report.close; t_sys_report.sql.clear; t_sys_report.sql.add('select 报表名称,报表属性,是否默认,CH_ID from t_sys_report where 报表属性=:报表属性 order by 报表名称'); t_sys_report.Parameters[0].value:=frm_sys_frprint.caption; t_sys_report.open; end; end else begin t_sys_report.close; t_sys_report.sql.clear; t_sys_report.sql.add('select 报表名称,报表属性,是否默认,CH_ID from t_sys_report where 报表属性=:报表属性 order by 报表名称'); t_sys_report.Parameters[0].value:=frm_sys_frprint.caption; t_sys_report.open; end; end else t_sys_report.Requery; t_sys_report.Locate('CH_ID',t_sys_reportfile['CH_ID'],[]); end; function Tfrm_sys_frprint.frxDesigner1SaveReport(Report: TfrxReport; SaveAs: Boolean): Boolean; var template : TStream; begin if saveas then begin try if SaveDialog1.Execute then frxReport1.savetofile(SaveDialog1.filename); except showmessage('另存格式失败!'); end; end else begin template := TMemoryStream.Create; template.Position := 0; frxReport1.SaveToStream(template); t_sys_reportfile.Edit; try t_sys_reportfile.DisableControls; (t_sys_reportfile.FieldByName('Report') as TBlobField).LoadFromStream(template); t_sys_reportfile.Post; finally t_sys_reportfile.EnableControls; template.Free; end; result:=true; end; end; function Tfrm_sys_frprint.frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant; begin // if uppercase(MethodName)='MONEYCN' then Result := MoneyCn(Params[0],Params[1]); if uppercase(MethodName)='ENGDATEFMT' then Result := EngDateFmt(Params[0],Params[1],Params[2],Params[3],Params[4],Params[5],Params[6]); if uppercase(MethodName)='GETCUSTBALDATE' then Result :=formatdatetime('YYYY-MM-DD',getstlDate(Params[0],Params[1],Params[2])); if uppercase(MethodName)='GETCUSTBALDAY' then Result :=inttostr(getstlDay(Params[0],Params[1],Params[2])); if uppercase(MethodName)='MONEYEN' then Result := EWords(Params[0],0); end; procedure Tfrm_sys_frprint.FormCreate(Sender: TObject); begin frxReport1.AddFunction('function MoneyCn(num:real;lx:boolean=false):widestring;','自定义'); frxReport1.AddFunction('function MoneyEn(num:real;):widestring;','自定义'); frxReport1.AddFunction('function EngDateFmt(ADateTime:TDateTime;JX,DX:boolean;MDY:Boolean=true;MD:Boolean=false;DIAN:Boolean=false;MY:Boolean=false):string;','自定义'); frxReport1.AddFunction('function GETCUSTBALDATE(ADateTime:TDateTime;Cust,Sale:String):TDateTime;','自定义'); frxReport1.AddFunction('function GETCUSTBALDAY(ADateTime:TDateTime;Cust,Sale:String):integer;','自定义'); end; procedure Tfrm_sys_frprint.Button5Click(Sender: TObject); begin try frm_code_send_head:=tfrm_code_send_head.Create (self); code_send_head_num:=5; frm_code_send_head.DataSource2:=ds_sys_reporthead1; frm_code_send_head.ShowModal; finally frm_code_send_head.Free; frm_code_send_head:=nil; end; end; procedure Tfrm_sys_frprint.N7Click(Sender: TObject); var template : TStream; str:widestring; ScriptPath:string; str_memo:Tmemo; begin if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try finally try try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; ScriptPath:=ExtractFilePath(ParamStr(0))+'CUSTOMFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); str:=ScriptPath +one_table_1.DataSource.DataSet.FieldByName('主提单号').AsString +FormatDateTime('yyyy',now) +FormatDateTime('mm',now) +FormatDateTime('dd',now) +FormatDateTime('hh',now) +FormatDateTime('nn',now)+'.xls'; frxXLSExport2.FileName:=str; frxReport1.Export(frxXLSExport2); str_memo:=Tmemo.create(application); str_memo.visible:=false; str_memo.Parent:=frm_sys_frprint; str_memo.Lines.Add('公司名称:海尔舱单-远大'); str_memo.Lines.Add('发送人:'+Employee); try if Trim(str_memo.lines.Text)<>'' then begin SMTP1.AuthType := satDefault; //(satNone, satDefault, satSASL); SMTP1.username:=MailAddress; SMTP1.Password :=MailPw; SMTP1.Host:='mail.sdsmartlogistics.com'; SMTP1.Port:=25; try SMTP1.Connect; except on e : Exception do begin ShowMessage('连接邮箱出错:'+E.Message); end; end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; try with IdMsg do begin body.Clear; Body.Text :=str_memo.lines.Text; From.address :=MailAddress; Recipients.EMailAddresses :=MailAddress; Subject:='海尔舱单 主提单号:'+one_table_1.DataSource.DataSet.FieldByName('主提单号').AsString; TIdAttachmentFile.Create(MessageParts,str); end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; SMTP1.Send(IdMsg); MessageDlg('发送成功!',mtConfirmation,[mbOK],0) finally SMTP1.Disconnect; end; end; except MessageDlg('发送失败!',mtError,[mbOK],0); end; str_memo.free; except showmessage('存为文件失败!'); end; close; end; end; procedure Tfrm_sys_frprint.bsSkinButton11Click(Sender: TObject); var template : TStream; str,s:widestring; ScriptPath,naspath:string; str_memo:Tmemo; begin naspath:=get_parameters_value(175,'\\223.223.95.160\data'); if t_sys_report.isempty then exit; t_sys_reportfile.Close; t_sys_reportfile.SQL.Clear; t_sys_reportfile.SQL.Add('select * from t_sys_report where CH_ID='+inttostr(t_sys_report['CH_ID'])); t_sys_reportfile.Open; if t_sys_reportfile.isempty then begin showmessage('没有打印格式,不能存为文件!'); exit; end; try template := t_sys_reportfile.CreateBlobStream(t_sys_reportfile.FieldByName('report'), bmRead); template.Position := 0; frxReport1.LoadFromStream(template); finally template.Free; end; frxReport1.PrepareReport; try if mailsend1.DataSet.IsEmpty then begin ShowMessage('没有邮件数据!请检查!'); Exit; end; str_memo:=Tmemo.create(application); str_memo.Parent:=frm_sys_frprint; str_memo.visible:=False; try SMTP1.AuthType := satDefault; //(satNone, satDefault, satSASL); SMTP1.username:=MailAddress; SMTP1.Password :=MailPw; SMTP1.Host:='mail.sdsmartlogistics.com'; SMTP1.Port:=25; try SMTP1.Connect; except on e : Exception do begin ShowMessage('连接邮箱出错:'+E.Message); end; end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; if SelectedMulti then //op_seae里面所选应收账单打印:修改为一个邮件发送方案发一个邮件,附件加主提单号为了区分 --- 应收账单批量打印 begin mailsend1.DataSet.First; while not mailsend1.DataSet.Eof do begin str_memo.Lines.Clear; str_memo.Lines.Add(mailsend1.DataSet.fieldbyname('邮件内容').AsString); str_memo.Lines.Add(''); str_memo.Lines.Add(mailsend1.DataSet.fieldbyname('邮件签名').AsString); ScriptPath:=ExtractFilePath(ParamStr(0))+'CUSTOMFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); s:= mailsend1.DataSet.fieldbyname('附件名称').AsString; with IdMsg do begin body.Clear; Body.Text :=str_memo.lines.Text; From.address :=MailAddress; Recipients.EMailAddresses :=mailsend1.DataSet.fieldbyname('收件人').AsString; Subject:=mailsend1.DataSet.fieldbyname('邮件主题').AsString; end; while s<>'' do begin str:=ScriptPath +Copy(s,0,Pos(',',s)-1)+'.PDF'; frxPDFExport1.FileName:=str; frxPDFExport1.ShowDialog:=false; frxReport1.Export(frxPDFExport1); TIdAttachmentFile.Create(IdMsg.MessageParts,str); s:=Copy(s,Pos(',',s)+1,Length(s)-1); end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; SMTP1.Send(IdMsg); UpLoadmailFile(str,naspath,'user','user',mailsend1.DataSet.fieldbyname('主提单号').AsString ,mailsend1.DataSet.fieldbyname('编号').AsString,mailsend1.DataSet.fieldbyname('单据类型').AsString ,mailsend1.DataSet.fieldbyname('收件人').AsString,mailsend1.DataSet.fieldbyname('邮件主题').AsString,str_memo.lines.Text); mailsend1.DataSet.Next; end; end else //以前的发邮件方式不变 begin ScriptPath:=ExtractFilePath(ParamStr(0))+'CUSTOMFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); str:=ScriptPath +mailsend1.DataSet.fieldbyname('附件名称').AsString+'.PDF'; frxPDFExport1.FileName:=str; frxPDFExport1.ShowDialog:=false; frxReport1.Export(frxPDFExport1); ScriptPath:=ExtractFilePath(ParamStr(0))+'CUSTOMFILE\'; if not DirectoryExists(ScriptPath) then CreateDir(ScriptPath); try with IdMsg do begin body.Clear; Body.Text :=str_memo.lines.Text; From.address :=MailAddress; Recipients.EMailAddresses :=mailsend1.DataSet.fieldbyname('收件人').AsString; Subject:=mailsend1.DataSet.fieldbyname('邮件主题').AsString; TIdAttachmentFile.Create(MessageParts,str); end; if not SMTP1.Connected then begin Sleep(1000); SMTP1.Connect; end; SMTP1.Send(IdMsg); UpLoadmailFile(str,naspath,'user','user',mailsend1.DataSet.fieldbyname('主提单号').AsString ,mailsend1.DataSet.fieldbyname('编号').AsString,mailsend1.DataSet.fieldbyname('单据类型').AsString ,mailsend1.DataSet.fieldbyname('收件人').AsString,mailsend1.DataSet.fieldbyname('邮件主题').AsString,str_memo.lines.Text); finally SMTP1.Disconnect; end; end; except MessageDlg('发送失败!',mtError,[mbOK],0); end; MessageDlg('发送成功!',mtConfirmation,[mbOK],0); str_memo.free; if SMTP1.Connected then SMTP1.Disconnect; except showmessage('存为文件失败!'); end; close; end; procedure Tfrm_sys_frprint.FormClose(Sender: TObject; var Action: TCloseAction); begin SelectedMulti:=False; end; end.