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, RTComboBox, 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; Label2: TLabel; Label3: TLabel; LabelFileName: TBtnEditA; beizhu: TMemo; ToolBar1: TToolBar; Tsave: TToolButton; Tclose: TToolButton; ADOQueryCmd: TADOQuery; OpenDialog1: TOpenDialog; RMGridReport1: TRMGridReport; Label9: TLabel; LabelCaption: TEdit; Label10: TLabel; LabelType: TRTComboBox; ADOQueryTmp: TADOQuery; RMPreview1: TRMPreview; RMGridReportDesigner1: TRMGridReportDesigner; RMBarCodeObject1: TRMBarCodeObject; RMBMPExport1: TRMBMPExport; RMXLSExport1: TRMXLSExport; RMDS_Main: TRMDBDataSet; RMDataDictionary1: TRMDataDictionary; ADOQuery1: TADOQuery; RMGridReport2: TRMGridReport; ADOQueryCmdSC: TADOQuery; ADOQueryCmdFileContent: TBlobField; ADOQueryCmdFtFileName: TStringField; ADOQueryCmdFileEditDate: TDateTimeField; ADOQueryCmdFileSize: TFloatField; ADOQueryCmdFiller: TStringField; ADOQueryCmdLastEditTime: TDateTimeField; ADOQueryCmdLastEditer: TStringField; ADOQueryCmdFileCreateDate: TDateTimeField; ADOQueryCmdchildPath: TStringField; ADOQueryCmdFileType: TStringField; procedure TcloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TsaveClick(Sender: TObject); procedure LabelFileNameBtnClick(Sender: TObject); procedure BtOpenClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure RMPreview1DblClick(Sender: TObject); private fIsChg:Boolean; function SaveData():Boolean; function EditData():Boolean; procedure InitWinData(); procedure InitVarDictionary(); procedure InitDataSetDictionary(); function PostFileToData():boolean; procedure GetFileInfo(mFile:string;var mfileSize:integer;var CreationTime:tdatetime;var WriteTime:tdatetime); function CovFileDate(Fd:_FileTime):TDateTime; public fcustomNo:string; fKeyNo:string; fWinStatus:integer; end; var frmLabelAdd: TfrmLabelAdd; implementation uses U_DataLink,U_RTFun; {$R *.dfm} 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 panel1.Align :=alClient; fIsChg:=false; // ClearWinData(panel1); // InitVarDictionary(); 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; PostFileToData(); 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.PostFileToData():boolean; var mFileName,fFileName,fpathFileName:string; Stream : TMemoryStream; mfileSize:integer; mCreationTime:TdateTime; mWriteTime:TdateTime; begin result:=false; fFileName:=Trim(LabelCaption.Text); fpathFileName:=Trim(LabelFileName.Text); try ADOQueryCmdSC.Connection.BeginTrans ; try with ADOQueryCmdSC do begin close; sql.Clear ; sql.Add('delete from RT_FileUpdate'); sql.Add('where FileName='+quotedStr(trim(fFileName))); execsql; end; with ADOQueryCmdSC do begin close; sql.Clear ; sql.Add('select * from RT_FileUpdate'); sql.Add('where FileName='+quotedStr(trim(fFileName))); Open; ////////////////////////// //获取文件信息 GetFileInfo(Trim(fpathFileName),mfileSize,mCreationTime,mWriteTime); if RecordCount<=0 then begin Append; fieldByName('FileName').AsString := trim(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 :=SGetServerDateTime(ADOQueryTmp); 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; //将OLE数据存入数据库 ADOQueryCmdFileContent.LoadFromFile(fpathFileName); //ADOQueryCmdFileContent.LoadFromStream(Stream); post; end; finally end; result:=true; ADOQueryCmdSC.Connection.CommitTrans ; except ADOQueryCmdSC.Connection.RollbackTrans ; Result:=False; application.MessageBox(pchar('提交文件['+trim(fFileName)+']失败!'),'提示信息',MB_ICONERROR); end; end; procedure TfrmLabelAdd.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.CovFileDate(Fd:_FileTime):TDateTime; var Tct:_SystemTime; Temp:_FileTime; begin FileTimeToLocalFileTime(Fd,Temp); FileTimeToSystemTime(Temp,Tct); CovFileDate:=SystemTimeToDateTime(Tct); end; ///////////////////////////////////////////////////////////////////// //函数功能:保存数据 ///////////////////////////////////////////////////////////////////// function TfrmLabelAdd.SaveData():Boolean; begin try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from P_Label'); sql.Add('where 1<>1'); Open; Append; 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; with ADOQueryTmp do begin Close; sql.Clear; sql.Add('select * from P_Label where LabelCaption='''+Trim(LabelCaption.text)+''''); Open; end; if ADOQueryTmp.RecordCount>1 then begin ADOQueryCmd.Connection.RollbackTrans; Result:=False; Application.MessageBox('标签名称重复!','提示',0); Exit; end; ADOQueryCmd.Connection.CommitTrans; result:=true; except ADOQueryCmd.Connection.RollbackTrans; Result:=false; application.MessageBox('保存标签模板出错!','警告信息',0); end; end; ///////////////////////////////////////////////////////////////////// //函数功能:保存数据 ///////////////////////////////////////////////////////////////////// function TfrmLabelAdd.EditData():Boolean; begin try ADOQueryCmd.Connection.BeginTrans; 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; with ADOQueryTmp do begin Close; sql.Clear; sql.Add('select * from P_Label where LabelCaption='''+Trim(LabelCaption.text)+''''); Open; end; if ADOQueryTmp.RecordCount>1 then begin ADOQueryCmd.Connection.RollbackTrans; Result:=False; Application.MessageBox('标签名称重复!','提示',0); Exit; end; ADOQueryCmd.Connection.CommitTrans; result:=true; except ADOQueryCmd.Connection.RollbackTrans; Result:=false; application.MessageBox('保存标签模板出错!','警告信息',0); end; end; procedure TfrmLabelAdd.LabelFileNameBtnClick(Sender: TObject); begin if OpenDialog1.Execute() then begin LabelFileName.Text:=OpenDialog1.FileName; LabelCaption.Text:=Trim(ExtractFileName(OpenDialog1.FileName)); RMGridReport1.LoadFromFile(LabelFileName.Text); RMGridReport1.Preview :=RMPreview1; RMGridReport1.ShowReport ; 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('customNoName=isnull((select customName from BC_customer where customNO=A.customNo),A.customNo)'); 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.PrepareReport; RMGridReport1.ShowReport ; end; except end; end; procedure TfrmLabelAdd.FormShow(Sender: TObject); begin if fWinStatus>0 then InitWinData(); 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.