mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
1102 lines
45 KiB
ObjectPascal
1102 lines
45 KiB
ObjectPascal
unit U_MakeUpdateBlock;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, StdCtrls, RzButton, ExtCtrls, RzPanel, Mask, RzEdit, RzBtnEdt,
|
||
ActnList, ImgList, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics,
|
||
cxFilter, cxData, cxDataStorage, cxEdit, cxClasses, cxControls,
|
||
cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridLevel,
|
||
cxGrid, cxButtonEdit, cxDropDownEdit,
|
||
|
||
U_BaseCommon, U_Common, U_BaseConstants, U_BaseUpdate, U_SCSLists,
|
||
cxCheckBox, cxCurrencyEdit, cxColorComboBox, cxSpinEdit, cxMemo,
|
||
cxTextEdit, RzRadChk, siComp, cxDBLookupComboBox, cxLookAndFeels,
|
||
cxLookAndFeelPainters, cxNavigator;
|
||
|
||
|
||
const
|
||
// Base Type Name
|
||
btnCableProject = 'cpc';
|
||
|
||
|
||
type
|
||
TMakeUpdateBlockSettings = class(TComponent)
|
||
private
|
||
FDirName: string;
|
||
published
|
||
property DirName: string read FDirName write FDirName;
|
||
end;
|
||
|
||
TF_MakeUpdateBlock = class(TForm)
|
||
RzPanel1: TRzPanel;
|
||
pnOkCancel: TRzPanel;
|
||
btClose: TRzBitBtn;
|
||
RzGroupBox1: TRzGroupBox;
|
||
dtFrom: TRzDateTimeEdit;
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
Label3: TLabel;
|
||
dtTo: TRzDateTimeEdit;
|
||
Label4: TLabel;
|
||
edVersion: TRzEdit;
|
||
Label5: TLabel;
|
||
beTargetDir: TRzButtonEdit;
|
||
RzGroupBox2: TRzGroupBox;
|
||
ToolBar1: TToolBar;
|
||
ToolButton1: TToolButton;
|
||
ToolButton2: TToolButton;
|
||
ImageList1: TImageList;
|
||
ActionList1: TActionList;
|
||
Act_AddCurrNB: TAction;
|
||
Act_AddNB: TAction;
|
||
Act_DelNB: TAction;
|
||
ToolButton3: TToolButton;
|
||
GL_Bases: TcxGridLevel;
|
||
Grid: TcxGrid;
|
||
GT_Bases: TcxGridTableView;
|
||
GT_BasesPath: TcxGridColumn;
|
||
GT_BasesType: TcxGridColumn;
|
||
GT_BasesCatalogName: TcxGridColumn;
|
||
GT_BasesOutFile: TcxGridColumn;
|
||
Timer_EditValueChanged: TTimer;
|
||
RzGroupBox3: TRzGroupBox;
|
||
RzPanel2: TRzPanel;
|
||
btStart: TRzBitBtn;
|
||
meProtocol: TMemo;
|
||
Button1: TButton;
|
||
RzGroupBox4: TRzGroupBox;
|
||
cbIncludeVirtualCompons: TRzCheckBox;
|
||
RzGroupBox5: TRzGroupBox;
|
||
cbIncludeComponsWithProps: TRzCheckBox;
|
||
cbOnlyVirtualCompons: TRzCheckBox;
|
||
siLang1: TsiLang;
|
||
RzGroupBox6: TRzGroupBox;
|
||
cbGuideProperties: TRzCheckBox;
|
||
cbAllowEditDate: TRzCheckBox;
|
||
cbGuideUGO: TRzCheckBox;
|
||
procedure pnOkCancelResize(Sender: TObject);
|
||
procedure GT_BasesTypePropertiesValidate(Sender: TObject;
|
||
var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
procedure Act_AddCurrNBExecute(Sender: TObject);
|
||
procedure Act_AddNBExecute(Sender: TObject);
|
||
procedure Act_DelNBExecute(Sender: TObject);
|
||
procedure GT_BasesFocusedRecordChanged(Sender: TcxCustomGridTableView;
|
||
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
|
||
ANewItemRecordFocusingChanged: Boolean);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure GT_BasesEditValueChanged(Sender: TcxCustomGridTableView;
|
||
AItem: TcxCustomGridTableItem);
|
||
procedure Timer_EditValueChangedTimer(Sender: TObject);
|
||
procedure btStartClick(Sender: TObject);
|
||
procedure Button1Click(Sender: TObject);
|
||
function GetSQLConditionByDates: String;
|
||
private
|
||
GForm: TForm;
|
||
FBaseTypeCaptions: TStringList;
|
||
FBaseTypeNames: TStringList;
|
||
|
||
procedure SetControls;
|
||
procedure AddBase(const ADBPath: String);
|
||
procedure AddBaseType(const ACaption, AName: String);
|
||
procedure AddToProtocol(const AMessage: String; AIndent: Integer);
|
||
procedure AfterBaseTypeChanged(ARecordIndex, ATypeIndex: Integer);
|
||
function CheckPathInGrid(const ADBPath: String; ARecordindexToSkip: Integer): Boolean;
|
||
function CheckUniquValuesInColumn(AColumnIndex: Integer; AOutNoUniqueValue: PString): Boolean;
|
||
public
|
||
Constructor Create(AOwner: TComponent; AForm: TForm);
|
||
Destructor Destroy; override;
|
||
|
||
function Execute: Boolean;
|
||
end;
|
||
|
||
//var
|
||
// Form1: TForm1;
|
||
|
||
implementation
|
||
Uses U_Main;
|
||
|
||
{$R *.dfm}
|
||
|
||
constructor TF_MakeUpdateBlock.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_MakeUpdateBlock.Destroy;
|
||
begin
|
||
inherited;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.pnOkCancelResize(Sender: TObject);
|
||
begin
|
||
SetMiddleControlChilds(TControl(Sender), TControl(Self));
|
||
end;
|
||
|
||
function TF_MakeUpdateBlock.Execute: Boolean;
|
||
begin
|
||
|
||
edVersion.Text := VersionEXE;
|
||
beTargetDir.Text := GetPathToDevelopment;
|
||
|
||
dtFrom.Date := Now;
|
||
dtTo.Date := Now;
|
||
|
||
SetControls;
|
||
|
||
ShowModal;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.SetControls;
|
||
begin
|
||
Act_DelNB.Enabled := GT_Bases.DataController.RecordCount > 0;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.AddBase(const ADBPath: String);
|
||
var
|
||
RecIndex: Integer;
|
||
begin
|
||
if Not CheckPathInGrid(ADBPath, -1) then
|
||
begin
|
||
RecIndex := GT_Bases.DataController.AppendRecord;
|
||
GT_Bases.DataController.Values[RecIndex, GT_BasesPath.Index] := ADBPath;
|
||
GT_Bases.DataController.Values[RecIndex, GT_BasesType.Index] := TcxComboBoxProperties(GT_BasesType.Properties).Items[0];
|
||
AfterBaseTypeChanged(RecIndex, -1);
|
||
|
||
SetControls;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.AddBaseType(const ACaption, AName: String);
|
||
begin
|
||
FBaseTypeCaptions.Add(ACaption);
|
||
FBaseTypeNames.Add(AName);
|
||
|
||
TcxComboBoxProperties(GT_BasesType.Properties).Items.Add(ACaption);
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.AddToProtocol(const AMessage: String; AIndent: Integer);
|
||
begin
|
||
meProtocol.Lines.Add(DupStr(' ', AIndent) + AMessage);
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.AfterBaseTypeChanged(ARecordIndex, ATypeIndex: Integer);
|
||
var
|
||
TypeIndex: Integer;
|
||
CatalogNameForCompons: string;
|
||
begin
|
||
TypeIndex := ATypeindex;
|
||
if Typeindex = -1 then
|
||
TypeIndex := FBaseTypeCaptions.IndexOf(GT_Bases.DataController.Values[ARecordIndex, GT_BasesType.Index]);
|
||
if TypeIndex <> -1 then
|
||
begin
|
||
CatalogNameForCompons := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
|
||
if FBaseTypeNames[TypeIndex] = btnCableProject then
|
||
CatalogNameForCompons := 'Added for version';
|
||
CatalogNameForCompons := CatalogNameForCompons +' '+ edVersion.Text;
|
||
|
||
GT_Bases.DataController.Values[ARecordIndex, GT_BasesCatalogName.Index] := CatalogNameForCompons;
|
||
GT_Bases.DataController.Values[ARecordIndex, GT_BasesOutFile.Index] :=
|
||
'upd'+RemoveSymbolFromStr(edVersion.Text, '.')+'_'+FBaseTypeNames[TypeIndex]+'.'+enUpd;
|
||
end;
|
||
end;
|
||
|
||
function TF_MakeUpdateBlock.CheckPathInGrid(const ADBPath: String; ARecordindexToSkip: Integer): Boolean;
|
||
var
|
||
i: Integer;
|
||
DBPath: String;
|
||
begin
|
||
Result := false;
|
||
if ADBPath <> '' then
|
||
begin
|
||
DBPath := AnsiUpperCaseFileName(ADBPath);
|
||
for i := 0 to GT_Bases.DataController.RecordCount - 1 do
|
||
begin
|
||
if (ARecordindexToSkip = -1) or (ARecordindexToSkip <> i) then
|
||
begin
|
||
if AnsiUpperCaseFileName(GT_Bases.DataController.Values[i, GT_BasesPath.Index]) = DBPath then
|
||
begin
|
||
Result := true;
|
||
MessageModal('<27><> "'+ADBPath+'" <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', ApplicationName, MB_OK or MB_ICONINFORMATION);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function TF_MakeUpdateBlock.CheckUniquValuesInColumn(AColumnIndex: Integer; AOutNoUniqueValue: PString): Boolean;
|
||
var
|
||
ColumnValues: TStringList;
|
||
i: integer;
|
||
begin
|
||
Result := false;
|
||
if AOutNoUniqueValue <> nil then
|
||
AOutNoUniqueValue^ := '';
|
||
if GT_Bases.DataController.RecordCount > 1 then
|
||
begin
|
||
ColumnValues := TStringList.Create;
|
||
for i := 0 to GT_Bases.DataController.RecordCount - 1 do
|
||
begin
|
||
if ColumnValues.IndexOf(GT_Bases.DataController.Values[i, AColumnIndex]) <> -1 then
|
||
begin
|
||
Result := true;
|
||
AOutNoUniqueValue^ := GT_Bases.DataController.Values[i, AColumnIndex];
|
||
|
||
Break; //// BREAK ////
|
||
end
|
||
else
|
||
ColumnValues.Add(GT_Bases.DataController.Values[i, AColumnIndex]);
|
||
end;
|
||
ColumnValues.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.GT_BasesTypePropertiesValidate(
|
||
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
||
var Error: Boolean);
|
||
var
|
||
TypeIndex: Integer;
|
||
begin
|
||
//if CheckPathInGrid(DisplayValue, GT_Bases.DataController.FocusedRecordIndex) then
|
||
//begin
|
||
// DisplayValue := GT_Bases.DataController.Values[GT_Bases.DataController.FocusedRecordIndex, GT_BasesType.Index];
|
||
//end;
|
||
|
||
TypeIndex := FBaseTypeCaptions.IndexOf(DisplayValue);
|
||
if TypeIndex = -1 then
|
||
DisplayValue := GT_Bases.DataController.Values[GT_Bases.DataController.FocusedRecordIndex, GT_BasesType.Index]
|
||
else
|
||
AfterBaseTypeChanged(GT_Bases.DataController.FocusedRecordIndex, TypeIndex);
|
||
GT_Bases.DataController.Values[GT_Bases.DataController.FocusedRecordIndex, GT_BasesType.Index] := DisplayValue;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.Act_AddCurrNBExecute(Sender: TObject);
|
||
begin
|
||
AddBase(TF_Main(GForm).GSCSBase.DBName);
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.Act_AddNBExecute(Sender: TObject);
|
||
var
|
||
OpenDialog: TOpenDialog;
|
||
begin
|
||
OpenDialog := TOpenDialog.Create(Self);
|
||
try
|
||
OpenDialog.Title := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>...';
|
||
if OpenDialog.FileName = '' then
|
||
OpenDialog.InitialDir := ExtractFileDir(Application.ExeName);
|
||
OpenDialog.DefaultExt := '*.'+enDat;
|
||
OpenDialog.Filter := GetDialogFilter(exdBase, enDat)+'|'+
|
||
GetDialogFilter(exdAll, '*');
|
||
OpenDialog.Options := OpenDialog.Options - [ofNoChangeDir] + [ofOverwritePrompt];
|
||
if OpenDialog.Execute then
|
||
AddBase(OpenDialog.FileName);
|
||
finally
|
||
FreeandNil(OpenDialog);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.Act_DelNBExecute(Sender: TObject);
|
||
begin
|
||
GT_Bases.DataController.DeleteFocused;
|
||
|
||
SetControls;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.GT_BasesFocusedRecordChanged(
|
||
Sender: TcxCustomGridTableView; APrevFocusedRecord,
|
||
AFocusedRecord: TcxCustomGridRecord;
|
||
ANewItemRecordFocusingChanged: Boolean);
|
||
begin
|
||
//
|
||
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.FormCreate(Sender: TObject);
|
||
begin
|
||
FBaseTypeCaptions := TStringList.Create;
|
||
FBaseTypeNames := TStringList.Create;
|
||
|
||
GT_BasesPath.DataBinding.ValueTypeClass := TcxStringValueType;
|
||
GT_BasesType.DataBinding.ValueTypeClass := TcxStringValueType;
|
||
GT_BasesCatalogName.DataBinding.ValueTypeClass := TcxStringValueType;
|
||
GT_BasesOutFile.DataBinding.ValueTypeClass := TcxStringValueType;
|
||
|
||
|
||
AddBaseType('<27><><EFBFBD>', 'scs');
|
||
AddBaseType('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'telecom');
|
||
AddBaseType('<27><><EFBFBD><EFBFBD><EFBFBD>', 'tube');
|
||
AddBaseType('CableProject CAD', btnCableProject);
|
||
AddBaseType('Panduit', 'panduit');
|
||
AddBaseType('rdm', 'rdm');
|
||
|
||
//TcxComboBoxProperties(GT_BasesType.Properties).Items.Add('<27><><EFBFBD>');
|
||
//TcxComboBoxProperties(GT_BasesType.Properties).Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||
//TcxComboBoxProperties(GT_BasesType.Properties).Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD>');
|
||
//TcxComboBoxProperties(GT_BasesType.Properties).Items.Add('CableProject CAD');
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.FormDestroy(Sender: TObject);
|
||
begin
|
||
FreeAndNil(FBaseTypeCaptions);
|
||
FreeAndNil(FBaseTypeNames);
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.GT_BasesEditValueChanged(
|
||
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
||
begin
|
||
//GT_Bases.OnEditValueChanged := nil;
|
||
//Timer_EditValueChanged.Enabled := true;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.Timer_EditValueChangedTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
try
|
||
if GT_Bases.DataController.IsEditing then
|
||
begin
|
||
GT_Bases.DataController.Post;
|
||
Application.ProcessMessages;
|
||
end;
|
||
finally
|
||
GT_Bases.OnEditValueChanged := GT_BasesEditValueChanged;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.btStartClick(Sender: TObject);
|
||
var
|
||
msgErr: String;
|
||
NoUniqueValue: string;
|
||
CanStart: Boolean;
|
||
|
||
SrcBase: TBase;
|
||
TrgBase: TBase;
|
||
i, j, k: Integer;
|
||
MakeUpdateParams: TMakeUpdateParams;
|
||
UpdateInfoItem: TUpdateInfoItem;
|
||
UpdateInfoCatalog: TUpdateInfoItem;
|
||
UpdateInfoCatalogRelation: TUpdateInfoItem;
|
||
UpdateInfoComponBeEmptyAfter: TUpdateInfoItem;
|
||
UpdateInfoCompPropRelAfter: TUpdateInfoItem;
|
||
AdditionUpdateInfo: TUpdateInfo;
|
||
AdditionUpdateInfoItem: TUpdateInfoItem;
|
||
UpdateInfoProperty: TUpdateInfoItem;
|
||
UpdateMaker: TBaseUpdateMaker;
|
||
|
||
MakeUpdateResults: TUpdateBaseResults;
|
||
|
||
SrcBasePath: String;
|
||
TrgBasePath: String;
|
||
NBEmtyPath: String;
|
||
|
||
PathID: TIntList;
|
||
TopCatalogIDs: TIntList;
|
||
IDComponent: Integer;
|
||
IDCatalog: Integer;
|
||
IDTopCatalog: Integer;
|
||
IDVirtualCompons: TIntList;
|
||
IsVirtualCompon: Integer;
|
||
FieldNames: TStringList;
|
||
ItemIndex: Integer;
|
||
|
||
ProcName: String;
|
||
ProtocolIndent: Integer;
|
||
ProtocolIndentStep: Integer;
|
||
|
||
ActRowLimit: Integer;
|
||
// Tolik 28/08/2019
|
||
//OldTick, CurrTick: Cardinal;
|
||
OldTick, CurrTick: DWord;
|
||
//
|
||
|
||
procedure FillUpdateInfoFromIntList(ADestUpdateInfoItem: TUpdateInfoItem; ASrcIDList: TIntList);
|
||
var
|
||
i: Integer;
|
||
IDFromList: Integer;
|
||
begin
|
||
SetSQLToFIBQuery(SrcBase.QSelect,
|
||
GetSQLByParams(qtSelect, ADestUpdateInfoItem.TableName, fnID+' = :'+fnID, nil, fnGUID), false);
|
||
for i := 0 to ASrcIDList.Count - 1 do
|
||
begin
|
||
IDFromList := ASrcIDList[i];
|
||
if GetValueIndexFromSortedIntList(IDFromList, ADestUpdateInfoItem.IDListToMakeUpdateSorted) = -1 then
|
||
begin
|
||
SrcBase.QSelect.Close;
|
||
SrcBase.QSelect.Params[0].AsInteger := IDFromList;
|
||
SrcBase.QSelect.ExecQuery;
|
||
if SrcBase.QSelect.RecordCount > 0 then
|
||
begin
|
||
ADestUpdateInfoItem.IDListToMakeUpdate.Add(IDFromList);
|
||
ADestUpdateInfoItem.IDListToMakeUpdateSorted.Add(IDFromList);
|
||
ADestUpdateInfoItem.GUIDListToMakeUpdate.Add(SrcBase.QSelect.Fields[0].AsString);
|
||
ADestUpdateInfoItem.GUIDListToMakeUpdateSorted.Add(SrcBase.QSelect.Fields[0].AsString);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure SelectComponsByElement(const AElementTableName, AElementSprFieldName: string;
|
||
ASprUpdateInfoItem, AElementUpdateInfoItemAfter: TUpdateInfoItem);
|
||
var
|
||
IDCompon: Integer;
|
||
IDElement: Integer;
|
||
GUIDElement: String;
|
||
ElementSprFieldValue: Integer;
|
||
SpravTablesIDs: TIntList;
|
||
ComponsToBeEmptyID: TIntList;
|
||
begin
|
||
{SetSQLToFIBQuery(SrcBase.QSelect, 'select ID, GUID from component '+
|
||
'where ID in '+
|
||
'(select ID_COMPONENT from '+AElementTableName+' where (date_in between '''+DateToStr(dtFrom.Date)+''' and '''+DateToStr(dtTo.Date)+'''))');
|
||
while Not SrcBase.QSelect.Eof do
|
||
begin
|
||
IDCompon := SrcBase.QSelect.Fields[0].AsInteger;
|
||
if UpdateInfoItem.IDListToMakeUpdateSorted.IndexOf(IDCompon) = -1 then
|
||
begin
|
||
UpdateInfoItem.IDListToMakeUpdate.Add(IDCompon);
|
||
UpdateInfoItem.IDListToMakeUpdateSorted.Add(IDCompon);
|
||
UpdateInfoItem.GUIDListToMakeUpdate.Add(SrcBase.QSelect.Fields[1].AsString);
|
||
UpdateInfoItem.GUIDListToMakeUpdateSorted.Add(SrcBase.QSelect.Fields[1].AsString);
|
||
end;
|
||
SrcBase.QSelect.Next;
|
||
end;}
|
||
|
||
SpravTablesIDs := TIntList.Create;
|
||
ComponsToBeEmptyID := TIntList.Create;
|
||
|
||
SetSQLToFIBQuery(SrcBase.QSelect, 'select ID, GUID, ID_COMPONENT, '+AElementSprFieldName+' from '+AElementTableName+' '+
|
||
' where '+GetSQLConditionByDates);
|
||
while Not SrcBase.QSelect.Eof do
|
||
begin
|
||
IDElement := SrcBase.QSelect.Fields[0].AsInteger;
|
||
GUIDElement := SrcBase.QSelect.Fields[1].AsString;
|
||
IDCompon := SrcBase.QSelect.Fields[2].AsInteger;
|
||
ElementSprFieldValue := SrcBase.QSelect.Fields[3].AsInteger;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if GetValueIndexFromSortedIntList(IDCompon, UpdateInfoItem.IDListToMakeUpdateSorted) = -1 then
|
||
begin
|
||
if GetValueIndexFromSortedIntList(IDCompon, ComponsToBeEmptyID) = -1 then
|
||
InsertValueToSortetIntList(IDCompon, ComponsToBeEmptyID);
|
||
if GetValueIndexFromSortedIntList(ElementSprFieldValue, SpravTablesIDs) = -1 then
|
||
InsertValueToSortetIntList(ElementSprFieldValue, SpravTablesIDs);
|
||
|
||
if GetValueIndexFromSortedIntList(IDElement, AElementUpdateInfoItemAfter.IDListToMakeUpdateSorted) = -1 then
|
||
begin
|
||
AElementUpdateInfoItemAfter.IDListToMakeUpdate.Add(IDElement);
|
||
AElementUpdateInfoItemAfter.IDListToMakeUpdateSorted.Add(IDElement);
|
||
AElementUpdateInfoItemAfter.GUIDListToMakeUpdate.Add(GUIDElement);
|
||
AElementUpdateInfoItemAfter.GUIDListToMakeUpdateSorted.Add(GUIDElement);
|
||
end;
|
||
end;
|
||
SrcBase.QSelect.Next;
|
||
end;
|
||
|
||
FillUpdateInfoFromIntList(ASprUpdateInfoItem, SpravTablesIDs);
|
||
FillUpdateInfoFromIntList(UpdateInfoComponBeEmptyAfter, ComponsToBeEmptyID);
|
||
|
||
FreeAndNil(ComponsToBeEmptyID);
|
||
FreeAndNil(SpravTablesIDs);
|
||
end;
|
||
|
||
procedure FillUpdateInfoFromGUIDList(AGUIDList: TStringList; const ATableName, AGenName: string);
|
||
var
|
||
TableUpdateInfoItem: TUpdateInfoItem;
|
||
IDList: TIntList;
|
||
NewID: Integer;
|
||
i: Integer;
|
||
begin
|
||
TableUpdateInfoItem := AdditionUpdateInfo.GetItemByTableName(ATableName);
|
||
if TableUpdateInfoItem = nil then
|
||
begin
|
||
TableUpdateInfoItem := TUpdateInfoItem.Create(nil);
|
||
TableUpdateInfoItem.TableName := ATableName;
|
||
TableUpdateInfoItem.GeneratorName := AGenName;
|
||
AdditionUpdateInfo.Add(TableUpdateInfoItem);
|
||
end;
|
||
|
||
// <20><> GUID <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID
|
||
IDList := TIntList.Create;
|
||
for i := 0 to AGUIDList.Count - 1 do
|
||
begin
|
||
NewID := GetIntFromTableByGUID(ATableName, fnID, AGUIDList[i], SrcBase.QSelect);
|
||
if NewID <> 0 then
|
||
IDList.Add(NewID);
|
||
end;
|
||
if IDList.Count > 0 then
|
||
FillUpdateInfoFromIntList(TableUpdateInfoItem, IDList);
|
||
IDList.Free;
|
||
end;
|
||
|
||
procedure SetRecordByVersion;
|
||
var
|
||
GUIDListToAdd: TStringList;
|
||
begin
|
||
//Exit; ///// EXIT /////
|
||
GUIDListToAdd := TStringList.Create;
|
||
case CurrentNBBuildID of
|
||
31: //10.07.2009
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Clear;
|
||
GUIDListToAdd.Add('{133728E3-D381-4B88-882A-70D051475D4C}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{DCB31978-3D85-4DB9-B9FC-8E0407B09A37}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{5367FED3-D1B0-4AED-9BB7-DE15833A32B2}'); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{ED263346-F61C-4A69-98F4-5094287F39EF}'); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{E0459A33-2325-4DFB-BAF8-8C5B8B1E0E58}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{32AE6103-84CE-468E-B1A6-2A50B7D241BB}'); // <20><><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{044278F2-155D-4A7E-8857-FDC5BC939EAD}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{F5609186-49AE-4C1A-9DCC-AECF2043177B}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
GUIDListToAdd.Add('{6C5D9FFE-8F99-49A0-BDB6-F59A778B9C03}'); // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{24ACC09C-B7EA-4F56-93A6-32394AF920C5}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{87125212-553D-47B0-A4B0-FC19FE3C8801}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{80B7A366-98B3-4D3A-A115-C64A3498218E}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{DE9D24BE-1066-4E62-B92B-ED2ABF6FB2BF}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{82FE2C3B-2B46-4B66-96C4-99F22448006A}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{E7FC6A24-ECF8-4762-953A-54B90AA73F33}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{46367268-D388-4F92-AE80-E47284F4F4BE}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{A16F3593-6FBF-4803-8FE5-A62C424C7C6D}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{533794A3-6E36-4ED0-A1DF-91F2819BDDA0}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{331A46EF-2E45-4519-88E7-314659663EAB}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Add('{9F3FE58A-6D26-4630-9776-838874196A52}'); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
FillUpdateInfoFromGUIDList(GUIDListToAdd, tnComponentTypes, gnComponentTypesID);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> x-pin <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
GUIDListToAdd.Clear;
|
||
GUIDListToAdd.Add(guidTwistedPair);
|
||
GUIDListToAdd.Add(guidTwistedPairFTP);
|
||
GUIDListToAdd.Add(guidInterfCoaxial);
|
||
GUIDListToAdd.Add(guidInterf1pin);
|
||
GUIDListToAdd.Add(guidInterf2pin);
|
||
GUIDListToAdd.Add(guidInterf3pin);
|
||
GUIDListToAdd.Add(guidInterf4pin);
|
||
GUIDListToAdd.Add(guidInterf6pin);
|
||
GUIDListToAdd.Add(guidInterf8pin);
|
||
GUIDListToAdd.Add(guidInterf10pin);
|
||
GUIDListToAdd.Add(guidInterf14pin);
|
||
GUIDListToAdd.Add(guidInterf16pin);
|
||
FillUpdateInfoFromGUIDList(GUIDListToAdd, tnInterface, gnInterfaceID);
|
||
|
||
end;
|
||
end;
|
||
FreeAndNil(GUIDListToAdd);
|
||
end;
|
||
|
||
|
||
procedure SetTableRecords(const aTable, AGenName: string);
|
||
var
|
||
GUIDListToAdd: TStringList;
|
||
begin
|
||
GUIDListToAdd := TStringList.Create;
|
||
|
||
SetSQLToFIBQuery(SrcBase.QSelect, 'select ID, GUID from '+aTable+' '+ ' where (date_in between '''+DateToStr(dtFrom.Date)+''' and '''+DateToStr(dtTo.Date)+''')');
|
||
while Not SrcBase.QSelect.Eof do
|
||
begin
|
||
GUIDListToAdd.Add(SrcBase.QSelect.Fields[1].AsString);
|
||
SrcBase.QSelect.Next;
|
||
end;
|
||
if GUIDListToAdd.Count > 0 then
|
||
begin
|
||
FillUpdateInfoFromGUIDList(GUIDListToAdd, aTable, AGenName);
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+IntToStr(GUIDListToAdd.Count)+' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> '+aTable, ProtocolIndent);
|
||
end;
|
||
FreeAndNil(GUIDListToAdd);
|
||
end;
|
||
|
||
|
||
procedure RemoveFromUpdateInfoItem(AUpdateInfoItem: TUpdateInfoItem; Index: Integer);
|
||
begin
|
||
AUpdateInfoItem.IDListToMakeUpdateSorted.Remove(UpdateInfoItem.IDListToMakeUpdate[Index]);
|
||
AUpdateInfoItem.GUIDListToMakeUpdateSorted.Delete(
|
||
AUpdateInfoItem.GUIDListToMakeUpdateSorted.IndexOf(AUpdateInfoItem.GUIDListToMakeUpdate[Index]));
|
||
|
||
AUpdateInfoItem.IDListToMakeUpdate.Delete(Index);
|
||
AUpdateInfoItem.GUIDListToMakeUpdate.Delete(Index);
|
||
end;
|
||
|
||
|
||
begin
|
||
ProcName := 'TF_MakeUpdateBlock.btStartClick';
|
||
|
||
ProtocolIndent := 0;
|
||
ProtocolIndentStep := 3;
|
||
|
||
msgErr := '';
|
||
CanStart := true;
|
||
if GT_Bases.DataController.RecordCount = 0 then
|
||
msgErr := '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>'
|
||
else
|
||
if CheckUniquValuesInColumn(GT_BasesOutFile.Index, @NoUniqueValue) then
|
||
begin
|
||
msgErr := '<27><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "'+NoUniqueValue+'" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>';
|
||
end;
|
||
|
||
if msgErr = '' then
|
||
begin
|
||
if CheckUniquValuesInColumn(GT_BasesType.Index, @NoUniqueValue) then
|
||
if MessageModal('<27><><EFBFBD> <20><><EFBFBD><EFBFBD> "'+NoUniqueValue+'" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?', ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDNO then
|
||
CanStart := false;
|
||
end
|
||
else
|
||
begin
|
||
CanStart := false;
|
||
MessageModal(msgErr, ApplicationName, MB_ICONINFORMATION or MB_OK);
|
||
end;
|
||
|
||
if CanStart then
|
||
begin
|
||
TF_Main(GForm).GSCSBase.SimpleClose(true);
|
||
try
|
||
SrcBase := TBase.Create(TF_Main(GForm).DM.ConnectParams);
|
||
TrgBase := TBase.Create(TF_Main(GForm).DM.ConnectParams);
|
||
try
|
||
NBEmtyPath := GetPathToNBEmpty;
|
||
|
||
meProtocol.Lines.Clear;
|
||
|
||
BeginProgress('', GT_Bases.DataController.RecordCount * 4);
|
||
try
|
||
OldTick := GetTickCount;
|
||
for i := 0 to GT_Bases.DataController.RecordCount - 1 do
|
||
begin
|
||
try
|
||
SrcBasePath := GT_Bases.DataController.Values[i, GT_BasesPath.Index];
|
||
TrgBasePath := beTargetDir.Text + '\' + GT_Bases.DataController.Values[i, GT_BasesOutFile.Index];
|
||
|
||
ProtocolIndent := 0;
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+SrcBasePath, ProtocolIndent);
|
||
ProtocolIndent := ProtocolIndent + ProtocolIndentStep;
|
||
|
||
SrcBase.Open(SrcBasePath);
|
||
|
||
UpdateInfoItem := TUpdateInfoItem.Create(nil);
|
||
UpdateInfoItem.TableName := tnComponent;
|
||
UpdateInfoItem.GeneratorName := gnComponentID;
|
||
MakeUpdateParams := TMakeUpdateParams.Create;
|
||
MakeUpdateParams.DBType := dbtComponent;
|
||
MakeUpdateParams.FUpdateInfoItems.Add(UpdateInfoItem);
|
||
|
||
AdditionUpdateInfo := TUpdateInfo.Create(true);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UpdateInfoProperty := TUpdateInfoItem.Create(nil);
|
||
UpdateInfoProperty.TableName := tnProperties;
|
||
UpdateInfoProperty.GeneratorName := gnPropertiesID;
|
||
AdditionUpdateInfo.Add(UpdateInfoProperty);
|
||
|
||
// ID <20> GUID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UpdateInfoComponBeEmptyAfter := TUpdateInfoItem.Create(nil);
|
||
UpdateInfoComponBeEmptyAfter.TableName := tnComponent;
|
||
UpdateInfoComponBeEmptyAfter.GeneratorName := gnComponentID;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UpdateInfoCompPropRelAfter := TUpdateInfoItem.Create(nil);
|
||
UpdateInfoCompPropRelAfter.TableName := tnCompPropRelation;
|
||
UpdateInfoCompPropRelAfter.GeneratorName := gnCompPropRelationID;
|
||
|
||
|
||
//31.10.2012 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if cbGuideProperties.Checked then
|
||
SetTableRecords(tnProperties, gnPropertiesID);
|
||
// Tolik 04/01/2017 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if cbGuideUGO.Checked then
|
||
SetTableRecords(tnObjectIcons, gnObjectIconsID);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GUID<49> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
SetSQLToFIBQuery(SrcBase.QSelect, 'select ID, GUID from component '+
|
||
'where (Not name is null) and ('+GetSQLConditionByDates+')');
|
||
while Not SrcBase.QSelect.Eof do
|
||
begin
|
||
//UpdateInfoItem.AddIDGuid(SrcBase.QSelect.Fields[0].AsInteger, SrcBase.QSelect.Fields[1].AsString);
|
||
UpdateInfoItem.IDListToMakeUpdate.Add(SrcBase.QSelect.Fields[0].AsInteger);
|
||
UpdateInfoItem.IDListToMakeUpdateSorted.Add(SrcBase.QSelect.Fields[0].AsInteger);
|
||
UpdateInfoItem.GUIDListToMakeUpdate.Add(SrcBase.QSelect.Fields[1].AsString);
|
||
UpdateInfoItem.GUIDListToMakeUpdateSorted.Add(SrcBase.QSelect.Fields[1].AsString);
|
||
SrcBase.QSelect.Next;
|
||
end;
|
||
if cbIncludeComponsWithProps.Checked then
|
||
SelectComponsByElement(tnCompPropRelation, fnIDProperty, UpdateInfoProperty, UpdateInfoCompPropRelAfter);
|
||
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+IntToStr(UpdateInfoItem.IDListToMakeUpdate.Count)+' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', ProtocolIndent);
|
||
StepProgress;
|
||
|
||
{//31.10.2012 <MOVED>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
SetRecordByVersion;
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
for j := AdditionUpdateInfo.Count - 1 downto 0 do
|
||
begin
|
||
AdditionUpdateInfoItem := AdditionUpdateInfo[j];
|
||
if AdditionUpdateInfoItem.IDListToMakeUpdateSorted.Count > 0 then
|
||
begin
|
||
MakeUpdateParams.FUpdateInfoItems.Add(AdditionUpdateInfoItem);
|
||
AdditionUpdateInfo.OwnsObjects := false;
|
||
try
|
||
AdditionUpdateInfo.Delete(j);
|
||
finally
|
||
AdditionUpdateInfo.OwnsObjects := true;
|
||
end;
|
||
end
|
||
else
|
||
AdditionUpdateInfo.Delete(i);
|
||
end;
|
||
//31.10.2012 </MOVED>}
|
||
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (UpdateInfoItem.IDListToMakeUpdate.Count > 0) or
|
||
(UpdateInfoComponBeEmptyAfter.IDListToMakeUpdateSorted.Count > 0) or
|
||
(AdditionUpdateInfo.Count > 0)
|
||
then
|
||
begin
|
||
//31.10.2012 - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (UpdateInfoItem.IDListToMakeUpdate.Count > 0) or
|
||
(UpdateInfoComponBeEmptyAfter.IDListToMakeUpdateSorted.Count > 0) then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
UpdateInfoCatalog := TUpdateInfoItem.Create(nil);
|
||
UpdateInfoCatalog.TableName := tnCatalog;
|
||
MakeUpdateParams.FUpdateInfoItems.Add(UpdateInfoCatalog);
|
||
UpdateInfoCatalogRelation := TUpdateInfoItem.Create(nil);
|
||
UpdateInfoCatalogRelation.TableName := tnCatalogRelation;
|
||
MakeUpdateParams.FUpdateInfoItems.Add(UpdateInfoCatalogRelation);
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//if UpdateInfoProperty.IDListToMakeUpdateSorted.Count > 0 then
|
||
// MakeUpdateParams.FUpdateInfoItems.Add(UpdateInfoProperty)
|
||
//else
|
||
// FreeAndNil(UpdateInfoProperty);
|
||
|
||
////31.10.2012 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetRecordByVersion;
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
for j := AdditionUpdateInfo.Count - 1 downto 0 do
|
||
begin
|
||
AdditionUpdateInfoItem := AdditionUpdateInfo[j];
|
||
if AdditionUpdateInfoItem.IDListToMakeUpdateSorted.Count > 0 then
|
||
begin
|
||
MakeUpdateParams.FUpdateInfoItems.Add(AdditionUpdateInfoItem);
|
||
AdditionUpdateInfo.OwnsObjects := false;
|
||
try
|
||
AdditionUpdateInfo.Delete(j);
|
||
finally
|
||
AdditionUpdateInfo.OwnsObjects := true;
|
||
end;
|
||
end
|
||
else
|
||
AdditionUpdateInfo.Delete(i);
|
||
end;
|
||
|
||
|
||
TopCatalogIDs := TIntList.Create;
|
||
IDVirtualCompons := TIntList.Create;
|
||
|
||
//31.10.2012 - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (UpdateInfoItem.IDListToMakeUpdate.Count > 0) or
|
||
(UpdateInfoComponBeEmptyAfter.IDListToMakeUpdateSorted.Count > 0) then
|
||
begin
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>")
|
||
j := 0;
|
||
while j <= (UpdateInfoItem.IDListToMakeUpdate.Count - 1) do
|
||
begin
|
||
PathID := GetComponCatalogOwnerPathIDByLevel(UpdateInfoItem.IDListToMakeUpdate[j], 1, SrcBase.QSelect);
|
||
if PathID <> nil then
|
||
begin
|
||
if PathID.Count > 0 then
|
||
if Not cbOnlyVirtualCompons.Checked then
|
||
begin
|
||
if TopCatalogIDs.IndexOf(PathID[0]) = -1 then
|
||
TopCatalogIDs.Add(PathID[0]);
|
||
IDComponent := UpdateInfoItem.IDListToMakeUpdate[j];
|
||
IDCatalog := PathID[PathID.Count-1];
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID GUID <20><><EFBFBD> catalog_relation
|
||
SetSQLToFIBQuery(SrcBase.QSelect, GetSQLByParams(qtSelect, tnCatalogRelation,
|
||
'('+fnIDCatalog+' = '''+IntToStr(IDCatalog)+''') and ('+fnIDComponent+' = '''+IntToStr(IDComponent)+''')',
|
||
nil, fnID+', '+fnGuid));
|
||
if SrcBase.QSelect.RecordCount > 0 then
|
||
UpdateInfoCatalogRelation.AddIDGuid(SrcBase.QSelect.Fields[0].AsInteger, SrcBase.QSelect.Fields[1].AsString);
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetSQLToFIBQuery(SrcBase.QSelect, GetSQLByParams(qtSelect, tnCatalog, fnID+' = :'+fnID, nil, fnGUID), false);
|
||
for k := 0 to PathID.Count - 1 do
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> GUID
|
||
SrcBase.QSelect.Close;
|
||
SrcBase.QSelect.Params[0].AsInteger := PathID[k];
|
||
SrcBase.QSelect.ExecQuery;
|
||
UpdateInfoCatalog.AddIDGuid(PathID[k], SrcBase.QSelect.Fields[0].AsString);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
RemoveFromUpdateInfoItem(UpdateInfoItem, j);
|
||
Continue; //// CONTINUE ////
|
||
end;
|
||
FreeAndNil(PathID);
|
||
end
|
||
else
|
||
begin
|
||
IsVirtualCompon := biFalse;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
if cbIncludeVirtualCompons.Checked then
|
||
begin
|
||
IsVirtualCompon := GetIntFromTableByID(tnComponent, fnIsTemplate, UpdateInfoItem.IDListToMakeUpdate[j], SrcBase.QSelect);
|
||
end;
|
||
|
||
if IsVirtualCompon = biFalse then
|
||
begin
|
||
{UpdateInfoItem.IDListToMakeUpdateSorted.Remove(UpdateInfoItem.IDListToMakeUpdate[j]);
|
||
UpdateInfoItem.GUIDListToMakeUpdateSorted.Delete(
|
||
UpdateInfoItem.GUIDListToMakeUpdateSorted.IndexOf(UpdateInfoItem.GUIDListToMakeUpdate[j]));
|
||
|
||
UpdateInfoItem.IDListToMakeUpdate.Delete(j);
|
||
UpdateInfoItem.GUIDListToMakeUpdate.Delete(j);}
|
||
RemoveFromUpdateInfoItem(UpdateInfoItem, j);
|
||
Continue; //// CONTINUE ////
|
||
end
|
||
else
|
||
IDVirtualCompons.Add(UpdateInfoItem.IDListToMakeUpdate[j]);
|
||
end;
|
||
j := j + 1;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> catalog <20> catalog_relation
|
||
UpdateInfoCatalogRelation.LookedIDs.Assign(UpdateInfoCatalogRelation.IDListToMakeUpdate);
|
||
UpdateInfoCatalog.LookedIDs.Assign(UpdateInfoCatalog.IDListToMakeUpdate);
|
||
|
||
SrcBase.Close;
|
||
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+IntToStr(UpdateInfoItem.IDListToMakeUpdate.Count)+' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', ProtocolIndent);
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+IntToStr(UpdateInfoCatalog.IDListToMakeUpdate.Count + 1)+' <20><><EFBFBD><EFBFBD><EFBFBD>', ProtocolIndent);
|
||
StepProgress;
|
||
end;
|
||
|
||
UpdateMaker := TBaseUpdateMaker.Create;
|
||
MakeUpdateResults := UpdateMaker.MakeUpdate(SrcBasePath, NBEmtyPath, TrgBasePath, MakeUpdateParams, false);
|
||
FreeAndNil(UpdateMaker);
|
||
|
||
if ubrSuccessful in MakeUpdateResults then
|
||
begin
|
||
TrgBase.Open(TrgBasePath);
|
||
FieldNames := TStringList.Create;
|
||
|
||
TrgBase.LoadSettings;
|
||
if TopCatalogIDs.Count > 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
FieldNames.Clear;
|
||
FieldNames.Add(fnName);
|
||
FieldNames.Add(fnSortID);
|
||
FieldNames.Add(fnKolCompon);
|
||
FieldNames.Add(fnItemsCount);
|
||
FieldNames.Add(fnIDItemType);
|
||
SetSQLToFIBQuery(TrgBase.QOperat, GetSQLByParams(qtInsert, tnCatalog, '', FieldNames, ''), false);
|
||
TrgBase.QOperat.ParamByName(fnName).AsString := GT_Bases.DataController.Values[i, GT_BasesCatalogName.Index];
|
||
TrgBase.QOperat.ParamByName(fnSortID).AsInteger := 1;
|
||
TrgBase.QOperat.ParamByName(fnKolCompon).AsInteger := 0;
|
||
TrgBase.QOperat.ParamByName(fnItemsCount).AsInteger := TopCatalogIDs.Count;
|
||
TrgBase.QOperat.ParamByName(fnIDItemType).AsInteger := itDir;
|
||
TrgBase.QOperat.ExecQuery;
|
||
|
||
IDTopCatalog := GenIDFromTable(TrgBase.QSelect, gnKatalogID, 0);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetSQLToFIBQuery(TrgBase.QOperat, GetSQLByParams(qtUpdate, tnCatalog, fnID+' = :'+fnID, nil, fnParentID), false);
|
||
for j := 0 to TopCatalogIDs.Count - 1 do
|
||
begin
|
||
TrgBase.QOperat.Close;
|
||
TrgBase.QOperat.Params[0].AsInteger := IDTopCatalog;
|
||
TrgBase.QOperat.Params[1].AsInteger := TopCatalogIDs[j];
|
||
TrgBase.QOperat.ExecQuery;
|
||
end;
|
||
|
||
TrgBase.FSettings.DBType := dbtCatalog;
|
||
end
|
||
else
|
||
TrgBase.FSettings.DBType := dbtUpdate;
|
||
TrgBase.SaveSettings;
|
||
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>"
|
||
FieldNames.Clear;
|
||
FieldNames.Add(fnID);
|
||
FieldNames.Add(fnGuid);
|
||
FieldNames.Add(fnActRowLimit);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetSQLToFIBQuery(TrgBase.QOperat, GetSQLByParams(qtInsert, tnComponent, '', FieldNames, ''), false);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetSQLToFIBQuery(TrgBase.QSelect, GetSQLByParams(qtSelect, tnComponent, fnID+' = :'+fnID, nil, fnID), false);
|
||
for j := 0 to UpdateInfoComponBeEmptyAfter.IDListToMakeUpdate.Count - 1 do
|
||
begin
|
||
TrgBase.QSelect.Close;
|
||
TrgBase.QSelect.Params[0].AsInteger := UpdateInfoComponBeEmptyAfter.IDListToMakeUpdate[j];
|
||
TrgBase.QSelect.ExecQuery;
|
||
if TrgBase.QSelect.RecordCount = 0 then
|
||
begin
|
||
TrgBase.QOperat.Close;
|
||
TrgBase.QOperat.Params[0].AsInteger := UpdateInfoComponBeEmptyAfter.IDListToMakeUpdate[j];
|
||
TrgBase.QOperat.Params[1].AsString := UpdateInfoComponBeEmptyAfter.GUIDListToMakeUpdate[j];
|
||
TrgBase.QOperat.Params[2].AsInteger := alrSkip;
|
||
TrgBase.QOperat.ExecQuery;
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if IDVirtualCompons.Count > 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetSQLToFIBQuery(TrgBase.QOperat, GetSQLByParams(qtUpdate, tnComponent, fnID+' = :'+fnID, nil, fnActRowLimit), false);
|
||
for j := 0 to IDVirtualCompons.Count - 1 do
|
||
begin
|
||
TrgBase.QOperat.Close;
|
||
TrgBase.QOperat.Params[0].AsInteger := alrInsIfNoExist;
|
||
TrgBase.QOperat.Params[1].AsInteger := IDVirtualCompons[j];
|
||
TrgBase.QOperat.ExecQuery;
|
||
end;
|
||
end;
|
||
|
||
if UpdateInfoCompPropRelAfter.IDListToMakeUpdate.Count > 0 then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
SetSQLToFIBQuery(TrgBase.QSelect,
|
||
GetSQLByParams(qtSelect, UpdateInfoCompPropRelAfter.TableName, fnID+' = :'+fnID, nil, fnID), false);
|
||
for j := UpdateInfoCompPropRelAfter.IDListToMakeUpdate.Count -1 downto 0 do
|
||
begin
|
||
TrgBase.QSelect.Close;
|
||
TrgBase.QSelect.Params[0].AsInteger := UpdateInfoCompPropRelAfter.IDListToMakeUpdate[j];
|
||
TrgBase.QSelect.ExecQuery;
|
||
if TrgBase.QSelect.RecordCount > 0 then
|
||
begin
|
||
UpdateInfoCompPropRelAfter.IDListToMakeUpdateSorted.Remove(UpdateInfoCompPropRelAfter.IDListToMakeUpdate[j]);
|
||
ItemIndex := UpdateInfoCompPropRelAfter.GUIDListToMakeUpdateSorted.IndexOf(UpdateInfoCompPropRelAfter.GUIDListToMakeUpdate[j]);
|
||
if ItemIndex <> -1 then
|
||
UpdateInfoCompPropRelAfter.GUIDListToMakeUpdateSorted.Delete(ItemIndex);
|
||
|
||
UpdateInfoCompPropRelAfter.IDListToMakeUpdate.Delete(j);
|
||
UpdateInfoCompPropRelAfter.GUIDListToMakeUpdate.Delete(j);
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TrgBase.Close;
|
||
UpdateMaker := TBaseUpdateMaker.Create;
|
||
//UpdateMaker.SrcBase.Open(SrcBasePath);
|
||
//UpdateMaker.DestBase.Open(TrgBasePath);
|
||
UpdateMaker.SrcBase := SrcBase;
|
||
UpdateMaker.DestBase := TrgBase;
|
||
UpdateMaker.SrcBase.Open(SrcBasePath);
|
||
UpdateMaker.DestBase.Open(TrgBasePath);
|
||
try
|
||
UpdateMaker.SetSrcTableIDs(UpdateInfoCompPropRelAfter);
|
||
UpdateMaker.InsertSrcTableToDest(UpdateInfoCompPropRelAfter);
|
||
|
||
|
||
//-------------------------------- Begin
|
||
//27.01.2013 -
|
||
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
//UpdateTableIntFieldRecsFromListID(UpdateMaker.DestBase.QOperat,
|
||
// UpdateInfoCompPropRelAfter.TableName, fnActRowLimit, alrInsIfNoExist,
|
||
// UpdateInfoCompPropRelAfter.IDListToMakeUpdate);
|
||
|
||
//27.01.2013 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> cbAllowEditDate (<28><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> dtFrom, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (alrUpdAllow), <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (alrInsIfNoExist)
|
||
ActRowLimit := alrInsIfNoExist;
|
||
if Not cbAllowEditDate.Checked then
|
||
begin
|
||
//ActRowLimit := alrUpdAllow;
|
||
UpdateTableIntFieldRecsFromListID(UpdateMaker.DestBase.QOperat,
|
||
UpdateInfoCompPropRelAfter.TableName, fnActRowLimit, ActRowLimit,
|
||
UpdateInfoCompPropRelAfter.IDListToMakeUpdate);
|
||
end;
|
||
//--------------------------------- End
|
||
|
||
finally
|
||
UpdateMaker.SrcBase := nil;
|
||
UpdateMaker.DestBase := nil;
|
||
end;
|
||
FreeAndNil(UpdateMaker);
|
||
end;
|
||
|
||
FieldNames.Free;
|
||
|
||
SrcBase.Close;
|
||
TrgBase.Close;
|
||
|
||
TrgBase.PackBase(TrgBasePath, TrgBase.ConnectParams);
|
||
RenameFile(TrgBasePath, TrgBasePath);
|
||
end;
|
||
StepProgress;
|
||
|
||
FreeAndNil(IDVirtualCompons);
|
||
FreeAndNil(TopCatalogIDs);
|
||
end
|
||
else
|
||
begin
|
||
CopyFileToByName(NBEmtyPath, TrgBasePath);
|
||
StepProgress;
|
||
StepProgress;
|
||
end;
|
||
StepProgress;
|
||
|
||
//MakeUpdateParams.FUpdateInfoItems.Remove(UpdateInfoItem);
|
||
//FreeAndNil(UpdateInfoItem);
|
||
FreeAndNil(UpdateInfoComponBeEmptyAfter);
|
||
FreeAndNil(AdditionUpdateInfo);
|
||
FreeAndNil(MakeUpdateParams);
|
||
except
|
||
on E: Exception do
|
||
begin
|
||
AddExceptionToLogEx('ProcName', E.Message);
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+E.Message, ProtocolIndent);
|
||
end;
|
||
end;
|
||
end;
|
||
CurrTick := GetTickCount - OldTick;
|
||
|
||
ProtocolIndent := 0;
|
||
AddToProtocol('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> '+FloatToStr(CurrTick/1000)+' <20><><EFBFBD>)', ProtocolIndent);
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
finally
|
||
SrcBase.Free;
|
||
TrgBase.Free;
|
||
end;
|
||
finally
|
||
TF_Main(GForm).GSCSBase.SimpleOpen(true);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_MakeUpdateBlock.Button1Click(Sender: TObject);
|
||
var
|
||
MakeUpdateBlockSettings: TMakeUpdateBlockSettings;
|
||
Stream: TFileStream;
|
||
begin
|
||
MakeUpdateBlockSettings := TMakeUpdateBlockSettings.Create(nil);
|
||
MakeUpdateBlockSettings.FDirName := 'update'; //'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
|
||
|
||
Stream := TFileStream.Create('c:\111.txt', fmCreate);
|
||
Stream.WriteComponent(MakeUpdateBlockSettings);
|
||
Stream.Free;
|
||
|
||
MakeUpdateBlockSettings.Free;
|
||
end;
|
||
|
||
function TF_MakeUpdateBlock.GetSQLConditionByDates: String;
|
||
begin
|
||
Result := '(date_in between '''+DateToStr(dtFrom.Date)+''' and '''+DateToStr(dtTo.Date)+''')';
|
||
if cbAllowEditDate.Checked then
|
||
Result := Result + ' OR (date_mod between '''+DateToStr(dtFrom.Date)+''' and '''+DateToStr(dtTo.Date)+''')';
|
||
end;
|
||
|
||
end.
|