git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.UserControl@16 970f2627-a9d2-4748-b3d4-b5283c4fe7db
267 lines
8.3 KiB
ObjectPascal
267 lines
8.3 KiB
ObjectPascal
unit UCHistDataset;
|
|
|
|
interface
|
|
|
|
uses SysUtils, Classes, UCHist_Type,UCHist_Base,Forms, Db, UCConsts_Language;
|
|
|
|
Type
|
|
TUCHist_DataSet = class(TComponent)
|
|
private
|
|
fDataSet: TDataSet;
|
|
fOnNewRecord ,
|
|
fOnBeforeDelete ,
|
|
fOnBeforeEdit ,
|
|
fOnAfterPost : TDataSetNotifyEvent;
|
|
fOptions: TUCHistOptions;
|
|
fControl: TUCControlHistorico;
|
|
procedure SetDataSet(const Value: TDataSet);
|
|
procedure SetfControl(const Value: TUCControlHistorico);
|
|
{ Private declarations }
|
|
protected
|
|
DataSetInEdit : Boolean;
|
|
AFields : Array of Variant;
|
|
procedure NewRecord(DataSet: TDataSet);
|
|
procedure BeforeDelete(DataSet: TDataSet);
|
|
procedure BeforeEdit(DataSet: TDataSet);
|
|
procedure AfterPost(DataSet: TDataSet);
|
|
procedure AddHistory( AppID , Form , FormCaption, Event , Obs , TableName : String; UserId : Integer );
|
|
Function GetValueFields : String;
|
|
procedure Loaded; override;
|
|
procedure Notification(AComponent: TComponent; AOperation: TOperation);override;
|
|
{ Protected declarations }
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
{ Public declarations }
|
|
published
|
|
{ Published declarations }
|
|
Property DataSet : TDataSet Read fDataSet Write SetDataSet;
|
|
Property ControlHistorico : TUCControlHistorico read fControl write SetfControl;
|
|
end;
|
|
|
|
implementation
|
|
|
|
|
|
procedure TUCHist_DataSet.AddHistory(AppID, Form, FormCaption, Event, Obs,
|
|
TableName: String; UserId: Integer);
|
|
begin
|
|
If fControl.Active then
|
|
fControl.UserControl.DataConnector.UCExecSQL
|
|
(
|
|
Format('INSERT INTO %s VALUES( %s, %d , %s , %s , %s , %s ,%s ,%s , %s )',
|
|
[ fControl.TableHistory.TableName ,
|
|
QuotedStr(AppID),
|
|
UserID,
|
|
QuotedStr( FormatDateTime('dd/mm/yyyy',date) ),
|
|
QuotedStr( FormatDateTime('hh:mm:ss',time) ),
|
|
QuotedStr( Form ),
|
|
QuotedStr( FormCaption ),
|
|
QuotedStr( Event ),
|
|
QuotedStr( Obs ) ,
|
|
QuotedStr( TableName )
|
|
]));
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.AfterPost(DataSet: TDataSet);
|
|
begin
|
|
If Assigned( fOnAfterPost ) then
|
|
fOnAfterPost( DataSet );
|
|
|
|
If ( ( DataSetInEdit = False ) and ( fControl.Options.SavePostInsert ) ) then // quando inserindo
|
|
AddHistory(fControl.UserControl.ApplicationID,
|
|
Screen.ActiveCustomForm.Name ,
|
|
Screen.ActiveCustomForm.Caption ,
|
|
fControl.HistoryMsg.Evento_Insert,
|
|
GetValueFields,
|
|
DataSet.Name,
|
|
fControl.UserControl.CurrentUser.UserID);
|
|
|
|
If ( ( DataSetInEdit = True ) and ( fControl.Options.SavePostEdit ) ) then // quando editando
|
|
AddHistory(fControl.UserControl.ApplicationID,
|
|
Screen.ActiveCustomForm.Name ,
|
|
Screen.ActiveCustomForm.Caption ,
|
|
fControl.HistoryMsg.Evento_Edit,
|
|
GetValueFields,
|
|
DataSet.Name,
|
|
fControl.UserControl.CurrentUser.UserID);
|
|
|
|
DataSetInEdit := False;
|
|
SetLength( AFields , 0 );
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.Assign(Source: TPersistent);
|
|
begin
|
|
if Source is TUCHist_DataSet then
|
|
begin
|
|
Self.DataSet := TUCHist_DataSet(Source).DataSet;
|
|
Self.ControlHistorico := TUCHist_DataSet(Source).ControlHistorico;
|
|
end
|
|
else
|
|
inherited;
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.BeforeDelete(DataSet: TDataSet);
|
|
begin
|
|
If Assigned( fOnBeforeDelete ) then
|
|
fOnBeforeDelete( DataSet );
|
|
|
|
DataSetInEdit := False;
|
|
SetLength( AFields , 0 );
|
|
|
|
If fControl.Options.SaveDelete then
|
|
AddHistory(fControl.UserControl.ApplicationID,
|
|
Screen.ActiveCustomForm.Name ,
|
|
Screen.ActiveCustomForm.Caption ,
|
|
fControl.HistoryMsg.Evento_Delete,
|
|
GetValueFields,
|
|
DataSet.Name,
|
|
fControl.UserControl.CurrentUser.UserID);
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.BeforeEdit(DataSet: TDataSet);
|
|
Var I : Integer;
|
|
begin
|
|
// Antes de Editar
|
|
If Assigned( fOnBeforeEdit ) then
|
|
fOnBeforeEdit( DataSet );
|
|
|
|
DataSetInEdit := True;
|
|
|
|
SetLength( AFields , DataSet.FieldCount );
|
|
For I := 0 to DataSet.FieldCount - 1 do
|
|
Begin
|
|
If DataSet.Fields[ I ].IsBlob = False then
|
|
AFields[ i ] := DataSet.Fields[ i ].Value
|
|
else AFields[ I ] := 'Blob';
|
|
End;
|
|
end;
|
|
|
|
constructor TUCHist_DataSet.Create(AOwner: TComponent);
|
|
begin
|
|
inherited;
|
|
DataSetInEdit := False;
|
|
fOptions := TUCHistOptions.Create(Self);
|
|
fDataSet := Nil;
|
|
fControl := Nil;
|
|
end;
|
|
|
|
destructor TUCHist_DataSet.Destroy;
|
|
begin
|
|
FreeAndNil( fOptions );
|
|
inherited;
|
|
end;
|
|
|
|
function TUCHist_DataSet.GetValueFields: String;
|
|
Var Aux : Integer;
|
|
begin
|
|
Result := '';
|
|
For Aux := 0 to DataSet.FieldCount - 1 do
|
|
Begin
|
|
If DataSet.Fields[ Aux ].IsBlob = False then
|
|
Begin
|
|
With DataSet.Fields[ Aux ] do
|
|
Begin
|
|
If DataSetInEdit = false then // inserindo ou deletando
|
|
try Result := Result + Format('%-20s = %s ',[ FieldName , AsString ] ) + #13#10; except end
|
|
else
|
|
Begin //editando
|
|
If fControl.Options.TypeSavePostEdit = tpSaveModifiedFields then
|
|
Begin
|
|
If Value <> AFields[ Aux ] then
|
|
try Result := Result + Format('%s||%s||%s',[FieldNAme, AFields[ Aux ] , Value ] ) + #13#10; except end;
|
|
End
|
|
else
|
|
try Result := Result + Format('%s||%s||%s',[FieldNAme, AFields[ Aux ] , Value ] )+ #13#10; except end;
|
|
End;
|
|
End;
|
|
end;
|
|
End; // for
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.Loaded;
|
|
begin
|
|
inherited;
|
|
if not(csDesigning in ComponentState) then
|
|
begin
|
|
if not Assigned( ControlHistorico ) then
|
|
raise Exception.Create( Format( RetornaLingua( ucPortuguesBr ,'Const_Hist_MsgExceptPropr'),['ControlHistorico']) );
|
|
|
|
If fControl.Active = false then exit;
|
|
|
|
if not Assigned(DataSet) then
|
|
raise Exception.Create( Format( RetornaLingua( fControl.UserControl.Language,'Const_Hist_MsgExceptPropr'),['DataSet']) );
|
|
|
|
fOnNewRecord := Nil;
|
|
fOnBeforeDelete := Nil;
|
|
fOnBeforeEdit := Nil;
|
|
fOnAfterPost := Nil;
|
|
|
|
If Assigned( DataSet.OnNewRecord ) then
|
|
fOnNewRecord := DataSet.OnNewRecord;
|
|
|
|
If Assigned( DataSet.BeforeDelete ) then
|
|
fOnBeforeDelete := DataSet.BeforeDelete;
|
|
|
|
If Assigned( DataSet.AfterPost ) then
|
|
fOnAfterPost := DataSet.AfterPost;
|
|
|
|
If Assigned( DataSet.BeforeEdit ) then
|
|
fOnBeforeEdit := DataSet.BeforeEdit;
|
|
|
|
DataSet.OnNewRecord := NewRecord;
|
|
DataSet.BeforeDelete := BeforeDelete;
|
|
DataSet.AfterPost := AfterPost;
|
|
DataSet.BeforeEdit := BeforeEdit;
|
|
end;
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.NewRecord(DataSet: TDataSet);
|
|
begin
|
|
If Assigned( fOnNewRecord ) then
|
|
fOnNewRecord( DataSet );
|
|
|
|
DataSetInEdit := False; // Inserindo novo registro
|
|
SetLength( AFields , 0 );
|
|
|
|
If fControl.Options.SaveNewRecord then
|
|
AddHistory( fControl.UserControl.ApplicationID,
|
|
Screen.ActiveCustomForm.Name ,
|
|
Screen.ActiveCustomForm.Caption,
|
|
fControl.HistoryMsg.Evento_NewRecord,
|
|
Format(RetornaLingua( fControl.UserControl.Language,'Const_Msg_NewRecord'),[fControl.UserControl.CurrentUser.UserName]),
|
|
DataSet.Name,
|
|
fControl.UserControl.CurrentUser.UserID);
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.Notification(AComponent: TComponent;
|
|
AOperation: TOperation);
|
|
begin
|
|
if (AOperation = opRemove) then
|
|
begin
|
|
If AComponent = fControl then
|
|
fControl := Nil;
|
|
|
|
if AComponent = fDataSet then
|
|
fDataSet := Nil;
|
|
end;
|
|
|
|
inherited Notification(AComponent, AOperation);
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.SetDataSet(const Value: TDataSet);
|
|
begin
|
|
fDataSet := Value;
|
|
if Assigned(Value) then
|
|
Value.FreeNotification(Self);
|
|
end;
|
|
|
|
procedure TUCHist_DataSet.SetfControl(const Value: TUCControlHistorico);
|
|
begin
|
|
fControl := Value;
|
|
if Value <> nil then
|
|
Value.FreeNotification(self);
|
|
end;
|
|
|
|
end.
|