unit U_LabelAdd; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, BtnEdit, ExtCtrls, DB, ADODB, RM_System, RM_Common, RM_Class, RM_GridReport, Buttons, FTComboBox, RM_Preview, RM_e_Xls, RM_e_Graphic, RM_e_bmp, RM_BarCode, RM_DsgGridReport, RM_Dataset, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid; type TfrmLabelAdd = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; customerNo: TBtnEditA; LabelFileName: TBtnEditA; beizhu: TMemo; ToolBar1: TToolBar; Tsave: TToolButton; Tclose: TToolButton; ADOQueryCmd: TADOQuery; OpenDialog1: TOpenDialog; RMGridReport1: TRMGridReport; Label9: TLabel; LabelCaption: TEdit; Label10: TLabel; LabelType: TFTComboBox; ADOQueryTmp: TADOQuery; RMPreview1: TRMPreview; RMGridReportDesigner1: TRMGridReportDesigner; RMBarCodeObject1: TRMBarCodeObject; RMBMPExport1: TRMBMPExport; RMXLSExport1: TRMXLSExport; RMDS_Main: TRMDBDataSet; RMDataDictionary1: TRMDataDictionary; ADOQuery1: TADOQuery; procedure TcloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TsaveClick(Sender: TObject); procedure LabelFileNameBtnClick(Sender: TObject); procedure customerNoBtnClick(Sender: TObject); procedure BtOpenClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure RMPreview1DblClick(Sender: TObject); private fIsChg:Boolean; fFileName:string; fpathFileName:string; function SaveData():Boolean; function EditData():Boolean; function PostFileToData():boolean; // function CovFileDate(Fd:_FileTime):TDateTime; procedure InitWinData(); procedure InitVarDictionary(); procedure InitDataSetDictionary(); public fcustomNo:string; fKeyNo:string; fWinStatus:integer; end; var frmLabelAdd: TfrmLabelAdd; implementation uses U_DataLink,U_Fun10; {$R *.dfm} ///////////////////////////////////////////// function CovFileDate(Fd:_FileTime):TDateTime; var Tct:_SystemTime; Temp:_FileTime; begin FileTimeToLocalFileTime(Fd,Temp); FileTimeToSystemTime(Temp,Tct); CovFileDate:=SystemTimeToDateTime(Tct); end; procedure GetFileInfo(mFile:string;var mfileSize:integer;var CreationTime:tdatetime;var WriteTime:tdatetime); var vSearchRec: TSearchRec; begin FindFirst(mFile,faAnyFile,vSearchRec); mfileSize:=vSearchRec.Size; CreationTime:=CovFileDate(vSearchRec.FindData.ftCreationTime);//创建时间 //vSearchRec.FindData.ftLastAccessTime//访问时间 WriteTime:=CovFileDate(vSearchRec.FindData.ftLastWriteTime);//修改时间 FindClose(vSearchRec); end; ///////////////////////////////////////////////////// //提交文件到服务器 ////////////////////////////////////////////////////// function TfrmLabelAdd.PostFileToData():boolean; var mFileName:string; Stream : TMemoryStream; mfileSize:integer; mCreationTime:TdateTime; mWriteTime:TdateTime; begin result:=false; try // ADOQueryCmd.Connection.BeginTrans ; try with ADOQueryCmd do begin close; sql.Clear ; sql.Add('delete from RT_FileUpdate'); sql.Add('where FileName='+quotedStr(trim(fFileName))); execsql; end; with ADOQueryCmd do begin close; sql.Clear ; sql.Add('select * from RT_FileUpdate'); sql.Add('where FileName='+quotedStr(trim(fFileName))); Open; ////////////////////////// //获取文件信息 GetFileInfo(fpathFileName,mfileSize,mCreationTime,mWriteTime); if RecordCount<=0 then begin Append; fieldByName('FileName').AsString := fFileName; end else begin edit; end; fieldByName('FileEditDate').Value :=mWriteTime; fieldByName('FileCreateDate').Value :=mCreationTime; fieldByName('FileSize').Value :=mfileSize; fieldByName('Filler').Value :=Dname; fieldByName('LastEditer').Value :=Dname; fieldByName('LastEditTime').Value :=DServerDate; if pos('.rmf',fFileName)>0 then begin fieldByName('FilePath').Value :='report'; fieldByName('FileType').Value :='公用'; end else if pos('.dll',fFileName)>0 then begin fieldByName('FilePath').Value :=''; fieldByName('FileType').Value :='一般'; end else begin fieldByName('FilePath').Value :=''; fieldByName('FileType').Value :='公用'; end; // FJStream.LoadFromFile(fpathFileName); // CompressionStream(FJStream); //tblobfield(FieldByName('Files')).LoadFromFile(FJStream); tblobfield(FieldByName('Files')).LoadFromFile(fpathFileName); //将OLE数据存入数据库 // ADOQueryCmdFileContent.LoadFromFile(fpathFileName); //ADOQueryCmdFileContent.LoadFromStream(Stream); post; end; finally // FJStream.free; end; result:=true; // ADOQueryCmd.Connection.CommitTrans ; except // ADOQueryCmd.Connection.RollbackTrans ; // application.MessageBox(pchar('提交文件['+trim(fFileName)+']失败!'),'提示信息',MB_ICONERROR); end; end; procedure TfrmLabelAdd.TcloseClick(Sender: TObject); begin if fIsChg then begin if application.MessageBox('标签设计过,是否要保存?','提示信息',1)=1 then begin Tsave.Click ; end else close; end else close; end; procedure TfrmLabelAdd.FormCreate(Sender: TObject); begin fIsChg:=false; end; procedure TfrmLabelAdd.TsaveClick(Sender: TObject); begin if trim(labelCaption.Text)='' then begin application.MessageBox('标签名称不能为空!','提示'); labelCaption.SetFocus; exit; end; if trim(LabelFileName.Text)='' then begin application.MessageBox('标签文件不能为空,请选择标签!','提示'); LabelFileName.SetFocus; exit; end; fpathFileName:= trim(LabelFileName.Text); fFileName:=ExtractFileName(fpathFileName); if fWinStatus=0 then begin if SaveData() then begin ModalResult:=1; end; end else begin if EditData() then begin ModalResult:=1; end; end; end; ///////////////////////////////////////////////////////////////////// //函数功能:保存数据 ///////////////////////////////////////////////////////////////////// function TfrmLabelAdd.SaveData():Boolean; begin ADOQueryCmd.Connection.BeginTrans; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from P_Label'); sql.Add('where 1<>1'); Open; Append; fieldByName('CustomerNO').value:=trim(customerno.txtCode); fieldByName('filler').value:=DName; fieldByName('filltime').value:=DServerDate; fieldByName('beizhu').value:= trim(beizhu.text); fieldByName('LabelCaption').value:=trim(LabelCaption.text); fieldByName('LabelType').value:=trim(LabelType.text); fieldByName('LabelFileName').value:= trim(LabelFileName.text); //TBlobField(FieldByName('LabelFile')).LoadFromStream(fStream); RMGridReport1.SaveToBlobField(TBlobField(FieldByName('LabelFile'))); Post; end; if not postFileToData() then begin ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存标签模板出错!','警告信息',0); exit; end; result:=true; ADOQueryCmd.Connection.CommitTrans; except Result:=false; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存标签模板出错!','警告信息',0); end; end; ///////////////////////////////////////////////////////////////////// //函数功能:保存数据 ///////////////////////////////////////////////////////////////////// function TfrmLabelAdd.EditData():Boolean; begin ADOQueryCmd.Connection.BeginTrans; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from P_Label'); sql.Add('where labelId='+fkeyNo); Open; Edit; fieldByName('LabelCaption').value:=trim(LabelCaption.text); fieldByName('LabelType').value:=trim(LabelType.text); fieldByName('LabelFileName').value:= trim(LabelFileName.text); RMGridReport1.SaveToBlobField(TBlobField(FieldByName('LabelFile'))); fieldByName('Editer').value:=DName; fieldByName('EditTime').value:=DServerDate; fieldByName('beizhu').value:= trim(beizhu.text); Post; end; if not postFileToData() then begin ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存标签模板出错!','警告信息',0); exit; end; ADOQueryCmd.Connection.CommitTrans; result:=true; except Result:=false; ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('保存标签模板出错!','警告信息',0); end; end; procedure TfrmLabelAdd.LabelFileNameBtnClick(Sender: TObject); begin if OpenDialog1.Execute() then begin LabelFileName.Text:=OpenDialog1.FileName; RMGridReport1.LoadFromFile(LabelFileName.Text); RMGridReport1.Preview :=RMPreview1; RMGridReport1.ShowReport ; end; end; procedure TfrmLabelAdd.customerNoBtnClick(Sender: TObject); begin { FormGetCust:=TFormGetCust.Create(self); if FormGetCust.ShowModal=mrok then begin customNo.TxtCode:=trim(FormGetCust.ADOQuery1.Fieldbyname('customno').AsString); customNo.Text:=trim(FormGetCust.ADOQuery1.Fieldbyname('shortname').AsString); end; FormGetCust.Free; } { frmCustHelp:=TfrmCustHelp.create(self); with frmCustHelp do begin if showModal=1 then begin customNo.TxtCode:=trim(ADOQueryHelp.Fieldbyname('customno').AsString); customNo.Text:=trim(ADOQueryHelp.Fieldbyname('shortname').AsString); end; free; end; } end; procedure TfrmLabelAdd.BtOpenClick(Sender: TObject); begin end; //////////////////////////////////////////////////////////// //初始化窗口数据 //////////////////////////////////////////////////////////// procedure TfrmLabelAdd.InitWinData(); begin try with ADOQueryTmp do begin close; sql.Clear ; sql.Add('select A.*'); sql.Add('from P_Label A'); sql.Add('WHERE LabelId='+fkeyNo); Open; if isEmpty then begin close; exit; end; SSetWinData(ADOQueryTmp,panel1); RMGridReport1.LoadFromBlobField(tblobfield(fieldbyname('labelFile'))); //RMGridReport2.FileName:=trim(fieldByName('labelFileName').AsString); //RMGridReport2.LoadFromBlobField(tblobfield(fieldbyname('labelFile'))); RMGridReport1.Preview :=RMPreview1; RMGridReport1.ShowReport ; RMPreview1.Refresh; end; except end; end; procedure TfrmLabelAdd.FormShow(Sender: TObject); begin if fWinStatus>0 then InitWinData(); RMPreview1.Align:=alClient; end; procedure TfrmLabelAdd.RMPreview1DblClick(Sender: TObject); begin //btOpen.Click ; end; //////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////// procedure TfrmLabelAdd.InitVarDictionary(); var i:integer; begin { try with RMGridReport2 do begin Dictionary.Variables.Clear ; Dictionary.Variables.AddCategory('客户单位信息'); with ADOQueryTmp do begin close; sql.clear; sql.Add('exec P_Label_CustPrintData'); sql.Add(quotedStr(fCustomNo)); Open; for i:=0 to FieldCount-1 do begin Dictionary.Variables.Add(trim(fields[i].FieldName) ,''); Dictionary.Variables.AsString[trim(fields[i].FieldName)]:=trim(fields[i].AsString); end; end; end; finally end; } end; ///////////////////////////////////////////////// // ///////////////////////////////////////////////// procedure TfrmLabelAdd.InitDataSetDictionary(); begin { with ADOQuery1 do begin close; sql.Clear ; sql.Add('exec P_Label_PrintSet'); sql.Add(quotedStr('')); //sql.Add(','+quotedStr('')); //sql.Add(','+quotedStr('')); //sql.Add(','+quotedStr('')); //sql.Add(','+quotedStr('')); OPen; end; with RMGridReport2 do begin Dictionary.FieldAliases.Clear; Dictionary.FieldAliases['RMDS_Main']:= '标签数据'; Dictionary.FieldAliases['RMDS_Main."barcode"']:='标签条码'; end; } end; end.