From 4c77143d0b45ec4bbc2d820079feb0d610a6a87c Mon Sep 17 00:00:00 2001 From: sgwp <63001967@qq.com> Date: Mon, 12 May 2025 09:50:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=85=AC=E5=85=B1=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dp10RepoV1/public10/ThreeFun/Fun/U_log.pas | 295 ++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 Delphi10/开发档案/Dp10RepoV1/public10/ThreeFun/Fun/U_log.pas diff --git a/Delphi10/开发档案/Dp10RepoV1/public10/ThreeFun/Fun/U_log.pas b/Delphi10/开发档案/Dp10RepoV1/public10/ThreeFun/Fun/U_log.pas new file mode 100644 index 0000000..0c7d767 --- /dev/null +++ b/Delphi10/开发档案/Dp10RepoV1/public10/ThreeFun/Fun/U_log.pas @@ -0,0 +1,295 @@ +unit U_log; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ComCtrls, ToolWin, ShlObj, cxShellCommon, cxControls, cxDropDownEdit, + cxContainer, cxShellTreeView, cxShellListView, StdCtrls, BtnEdit, + OleCtnrs, DB, ADODB,DBClient,cxGridDBTableView, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DBGrids, cxDBData, + cxGridLevel, cxClasses, cxGridCustomView, StrUtils, Midas,cxMRUEdit, + cxGridCustomTableView, cxGridTableView, cxTimeEdit, cxButtonEdit, + cxTreeView, cxGrid, cxDBLookupComboBox, cxCalendar, cxCurrencyEdit, + cxGridExportLink, cxMemo, cxTextEdit, RTComboBox, dxLayoutControl,RegularExpressions; + + +function getCDSDataChangeLog(keyNo,SerialNoFieldName:string;TV_Edit: TcxGridDBTableView;ADOCmd:TADOQuery): string; +function getMainDataChangeLog(dxLayoutControl:TdxLayoutControl;ADOQueryCmd:TADOQuery; mTag: Integer): String; +function WriteChangeLog(FMainId,ModelStr,OperorStr:string;dxLayoutControl:TdxLayoutControl; mTag: Integer;ADO_Main:TADOQuery;SubIdFieldName,SerialNoFieldName:string;TV1: TcxGridDBTableView;ADO_Sub:TADOQuery; ADOQueryBaseCmd:TADOQuery): Boolean; +//־¼ +function WriteOneTableChangeLog(keyNo,ModelStr,OperorStr:string;dxLayoutControl:TdxLayoutControl; mTag: Integer;ADO_Main:TADOQuery;ADOQueryBaseCmd:TADOQuery): Boolean; +//ͨ־ַд־ +function WriteLog(keyNo,ModelStr,OperorStr:string;logStr:string;ADOQueryBaseCmd:TADOQuery): Boolean; +implementation +//////////////////////////////ϸ//////////////////////////////// +//FMainId ModelStrģƣ OperorStrԱ +/// SubIdFieldName:ӱ +//SerialNoFieldName ӱ +function WriteChangeLog(FMainId,ModelStr,OperorStr:string;dxLayoutControl:TdxLayoutControl; mTag: Integer;ADO_Main:TADOQuery;SubIdFieldName,SerialNoFieldName:string;TV1: TcxGridDBTableView;ADO_Sub:TADOQuery; ADOQueryBaseCmd:TADOQuery): Boolean; +var + TmpStr: string; + mainlogStr,sublogstr:string; +begin + try + Result := false; + mainlogStr:=getMainDataChangeLog(dxLayoutControl,ADO_Main,mTag); + sublogstr:=getCDSDataChangeLog(SubIdFieldName,SerialNoFieldName,TV1,ADO_Sub); + TmpStr:= trim(mainlogStr) + trim(sublogstr) ; + if TmpStr='' then + begin + result:=true; + exit; + end; + with ADOQueryBaseCmd do begin + close; + sql.Clear; + sql.Add(' insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); + sql.Add(' ' + quotedstr(Trim(OperorStr))); + sql.Add(',getdate() '); + sql.Add(',' + quotedstr(Trim(ModelStr))); + sql.Add(',' + quotedstr(Trim('޸'))); + sql.Add(',' + quotedstr(TmpStr)); + sql.Add(',' + quotedstr(Trim('ɹ'))); + sql.Add(')'); + execsql; + end; + Result := True; + except + raise Exception.Create(PWideChar('޸־ʱ!')); + end; +end; + +////////////////////// +//־¼ +//FMainId +function WriteOneTableChangeLog(keyNo,ModelStr,OperorStr:string;dxLayoutControl:TdxLayoutControl; mTag: Integer;ADO_Main:TADOQuery;ADOQueryBaseCmd:TADOQuery): Boolean; +var + TmpStr: string; +begin + try + Result := false; + TmpStr:=getMainDataChangeLog(dxLayoutControl,ADO_Main,mTag); + if TmpStr='' then + begin + result:=true; + exit; + end; + with ADOQueryBaseCmd do begin + close; + sql.Clear; + sql.Add(' insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); + sql.Add(' ' + quotedstr(Trim(OperorStr))); + sql.Add(',getdate() '); + sql.Add(',' + quotedstr(Trim(ModelStr))); + sql.Add(',' + quotedstr(Trim('޸'))); + sql.Add(',' + quotedstr(TmpStr)); + sql.Add(',' + quotedstr(keyNo)); + sql.Add(')'); + execsql; + end; + Result := True; + except + raise Exception.Create(PWideChar('޸־ʱ!')); + end; +end; + +////////////////////// +//ͨ־ַд־ +function WriteLog(keyNo,ModelStr,OperorStr:string;logStr:string;ADOQueryBaseCmd:TADOQuery): Boolean; +var + TmpStr: string; +begin + try + Result := false; + if logStr='' then + begin + result:=true; + exit; + end; + with ADOQueryBaseCmd do begin + close; + sql.Clear; + sql.Add(' insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); + sql.Add(' ' + quotedstr(Trim(OperorStr))); + sql.Add(',getdate() '); + sql.Add(',' + quotedstr(Trim(ModelStr))); + sql.Add(',' + quotedstr(Trim('޸'))); + sql.Add(',' + quotedstr(logStr)); + // sql.Add(',' + quotedstr(keyNo)); + sql.Add(',' + quotedstr(keyNo)); + sql.Add(')'); + execsql; + end; + Result := True; + except + raise Exception.Create(PWideChar('޸־ʱ!')); + end; +end; + +function getCDSDataChangeLog(keyNo,SerialNoFieldName:string;TV_Edit: TcxGridDBTableView;ADOCmd:TADOQuery): string; +var + i,k: integer; + TmpLogStr: string; + TmpField: TField; + TmpColumn: TcxGridDBColumn; + mLogStr:string; + CDS_Edit: TClientDataset; +begin + mLogStr := ''; + result:=''; + CDS_Edit:= TV_Edit.DataController.DataSource.DataSet as TClientDataset; + try + if TV_Edit = nil then + begin + exit; + end; + if CDS_Edit = nil then + begin + exit; + end; + if TV_Edit.DataController.DataSource.DataSet <> CDS_Edit then + begin + exit; + end; +// LogEntry := Format('[%s] ֶ[%s] [%s] Ϊ[%s] ʱ[%s] û[%s]', + with ADOCmd do + begin + First; + k:=1; + while not eof do + begin + if not CDS_Edit.Locate(keyNo, FieldByName(keyNo).Value, []) then + begin + Continue; + end; + TmpLogStr := ''; + for i := 0 to Fields.Count-1 do + begin + TmpField := CDS_Edit.FindField(Fields[i].FieldName); + TmpColumn := TV_Edit.GetColumnByFieldName(Fields[i].FieldName); + if (TmpField <> nil) and (TmpColumn <> nil) and (Trim(Fields[i].AsString) <> Trim(TmpField.AsString)) then + begin + TmpLogStr := TmpLogStr + '[' + TmpColumn.Caption + ':' + trim(Fields[i].AsString) + '' + trim(TmpField.AsString) + ']'; + end; + end; + if TmpLogStr <> '' then + begin + if (SerialNoFieldName<>'') and (Fields.FindField(SerialNoFieldName)<>nil) then + mLogStr := mLogStr + '{' + ':' + trim(FieldByName(SerialNoFieldName).AsString) + '|' + trim(FieldByName(keyNo).AsString) + TmpLogStr + '}'+#10#13 + else + mLogStr := mLogStr + '{' + ':' + inttostr(k) + '|' + trim(FieldByName(keyNo).AsString) + TmpLogStr + '}'+#10#13 ; + end; + Next; + end; + end; + + result:=mLogStr; + except + raise Exception.Create(PWideChar('ȡ޸ֶʱ!')); + end; +end; + +function getMainDataChangeLog(dxLayoutControl:TdxLayoutControl;ADOQueryCmd:TADOQuery; mTag: Integer): String; +var + i: integer; + mLogStr,mcaption:string; + mOldValue,mNewValue:string; +begin + try + mLogStr := ''; + with dxLayoutControl do + begin + for i := 0 to ControlCount - 1 do + begin + mcaption:=TRegEx.Replace(trim(dxLayoutControl.FindItem(Controls[i]).CaptionOptions.Text), '\[.*?\]', ''); + mOldValue:=trim(ADOQueryCmd.fieldByName(Controls[i].Name).AsString); + + if Controls[i].Tag = mTag then + begin + if Controls[i] is TcxButtonEdit then + begin + mNewValue:= Trim(TcxButtonEdit(Controls[i]).Text) ; + if Trim(ADOQueryCmd.fieldByName(Controls[i].Name).AsString) <> mNewValue then + begin + mLogStr := mLogStr + '[' + mcaption + ':' +mOldValue + '' + mNewValue + ']'; + end; + end + else if Controls[i] is TcxCurrencyEdit then + begin + mNewValue:= Trim(TcxCurrencyEdit(Controls[i]).Text) ; + if ADOQueryCmd.fieldByName(Controls[i].Name).Value <> TcxCurrencyEdit(Controls[i]).Value then + begin + mLogStr := mLogStr + '[' + mcaption + ':' + mOldValue + '' + mNewValue + ']'; + end; + end + else if Controls[i] is TcxTextEdit then + begin + mNewValue:= Trim(TcxTextEdit(Controls[i]).Text) ; + if Trim(ADOQueryCmd.fieldByName(Controls[i].Name).AsString) <> mNewValue then + begin + mLogStr := mLogStr + '[' + mcaption + ':' +mOldValue + '' + mNewValue + ']'; + end; + end + else if Controls[i] is TcxMRUEdit then + begin + mNewValue:= Trim(TcxMRUEdit(Controls[i]).Text) ; + if Trim(ADOQueryCmd.fieldByName(Controls[i].Name).AsString) <> mNewValue then + begin + mLogStr := mLogStr + '[' + mcaption + ':' +mOldValue + '' + mNewValue + ']'; + end; + end + else if Controls[i] is TRichEdit then + begin + mNewValue:= Trim(TRichEdit(Controls[i]).Text) ; + if ADOQueryCmd.fieldByName(Controls[i].Name).AsString <> mNewValue then + begin + mLogStr := mLogStr + '[' + mcaption + ':' + mOldValue + '' + mNewValue+ ']'; + end; + end + else if Controls[i] is TcxComboBox then + begin + mNewValue:= Trim(TcxComboBox(Controls[i]).Text) ; + if Trim(ADOQueryCmd.fieldByName(Controls[i].Name).AsString) <> mNewValue then + begin + mLogStr := mLogStr + '[' + mcaption + ':' + mOldValue + '' + mNewValue+ ']'; + end; + end + else if Controls[i] is TcxDateEdit then + begin + mNewValue:= Trim(TcxDateEdit(Controls[i]).Text) ; + if ADOQueryCmd.fieldByName(Controls[i].Name).AsDateTime <> TcxDateEdit(Controls[i]).Date then + begin + mLogStr := mLogStr + '[' + mcaption + ':' + mOldValue+ '' + mNewValue + ']'; + end; + end + else if Controls[i] is TcxMemo then + begin + mNewValue:= Trim(TcxMemo(Controls[i]).Text) ; + if Trim(ADOQueryCmd.fieldByName(Controls[i].Name).AsString) <> mNewValue then + begin + mLogStr := mLogStr + '[' + mcaption + ':' + mOldValue + '' + mNewValue + ']'; + end; + end + else if Controls[i] is TcxTimeEdit then + begin + if ADOQueryCmd.fieldByName(Controls[i].Name).AsDateTime <> TcxTimeEdit(Controls[i]).Time then + begin + mLogStr := mLogStr + '[' + mcaption + ':' + mOldValue + '' + Trim(TcxTimeEdit(Controls[i]).Text) + ']'; + end; + end; + end; + end; + end; + if mLogStr = '' then + begin + exit; + end; + mLogStr:=mLogStr + #13#10 ; + result:=mLogStr; + except + raise Exception.Create(PWideChar('ȡ޸ֶʱ!')); + end; +end; + +end.