expertcad/SRC/SCSNormBase/U_ConfiguratorUpdateInfo.pas
2025-05-12 10:07:51 +03:00

2033 lines
70 KiB
ObjectPascal
Raw Blame History

unit U_ConfiguratorUpdateInfo;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Contnrs,
U_BaseCommon, U_BaseConstants, U_SCSLists, RzTabs, RzButton, ExtCtrls, RzPanel, cxStyles,
cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB,
cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
cxCheckBox, cxCurrencyEdit, cxColorComboBox, cxSpinEdit, StdCtrls, Mask,
RzEdit, RzSpnEdt, cxMemo, RzRadChk, RzRadGrp, Buttons, siComp, siLngLnk,
cxTextEdit, ComCtrls, RzBtnEdt,
U_Common_Classes, FIB, FIBQuery, pFIBQuery, Menus, RzCmboBx, RzLstBox, U_SCSComponent,
cxDBLookupComboBox, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator;
type
TTableTextColumnsInfo = class(TMyObject)
public
TableName: string;
TextFields: TStringList;
constructor Create;
destructor Destroy; override;
end;
TF_ConfiguratorUpdateInfo = class(TForm)
RzPageControl1: TRzPageControl;
RzGroupBox1: TRzGroupBox;
RzBitBtn1: TRzBitBtn;
tsUpdStructInfo: TRzTabSheet;
tsUpdInfoRelation: TRzTabSheet;
gbRecord: TRzGroupBox;
GT_UpdStructInfo: TcxGridDBTableView;
GL_UpdStructInfo: TcxGridLevel;
Grid_UpdStructInfo: TcxGrid;
GT_UpdStructInfoID: TcxGridDBColumn;
GT_UpdStructInfoDateEntry: TcxGridDBColumn;
GT_UpdStructInfoBUILD_ID: TcxGridDBColumn;
GT_UpdStructInfoScript: TcxGridDBColumn;
GT_UpdStructInfoSortID: TcxGridDBColumn;
RzGroupBox3: TRzGroupBox;
btAddAsNew: TRzBitBtn;
btUpdate: TRzBitBtn;
btDelete: TRzBitBtn;
RzPanel1: TRzPanel;
deDateEntry: TRzDateTimeEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
seBuildID: TRzSpinEdit;
seSortID: TRzSpinEdit;
RzPanel2: TRzPanel;
Label4: TLabel;
meScript: TRzMemo;
cbIncSortIDBeforeNew: TRzCheckBox;
RzGroupBox2: TRzGroupBox;
RzPanel3: TRzPanel;
RzGroupBox4: TRzGroupBox;
RzPanel4: TRzPanel;
GT_UpdInfo: TcxGridDBTableView;
GL_UpdInfo: TcxGridLevel;
Grid_UpdInfo: TcxGrid;
Grid_UpdInfoRel: TcxGrid;
GT_UpdInfoRel: TcxGridDBTableView;
GL_UpdInfoRel: TcxGridLevel;
Label5: TLabel;
edUpdInfoTableName: TRzEdit;
Label6: TLabel;
edUpdInfoGeneratorName: TRzEdit;
cbUpdInfoIsOn: TRzCheckBox;
Label7: TLabel;
seUpdInfoSortID: TRzSpinEdit;
cbUpdInfoIncBeforeNew: TRzCheckBox;
btUpdInfoAsNew: TRzBitBtn;
btUpdInfoUpdate: TRzBitBtn;
btUpdInfoDelete: TRzBitBtn;
Splitter1: TSplitter;
rgUpdInfoTableType: TRzRadioGroup;
rgUpdInfoRelRelationType: TRzRadioGroup;
Label8: TLabel;
edUpdInfoRelTableName: TRzEdit;
Label9: TLabel;
edUpdInfoRelFieldName: TRzEdit;
btUpdInfoRelAsNew: TRzBitBtn;
btUpdInfoRelUpdate: TRzBitBtn;
btUpdInfoRelDelete: TRzBitBtn;
GT_UpdInfoID: TcxGridDBColumn;
GT_UpdInfoISON: TcxGridDBColumn;
GT_UpdInfoTABLE_NAME: TcxGridDBColumn;
GT_UpdInfoGENERATOR_NAME: TcxGridDBColumn;
GT_UpdInfoSORT_ID: TcxGridDBColumn;
GT_UpdInfoTABLE_TYPE: TcxGridDBColumn;
GT_UpdInfoRelID: TcxGridDBColumn;
GT_UpdInfoRelRELATION_TYPE: TcxGridDBColumn;
GT_UpdInfoRelREL_TABLE_NAME: TcxGridDBColumn;
GT_UpdInfoRelREL_FIELD_NAME: TcxGridDBColumn;
RzPanel5: TRzPanel;
btCleatScript: TSpeedButton;
Label10: TLabel;
seUpdInfoRel: TRzSpinEdit;
GT_UpdInfoRelSORT_ID: TcxGridDBColumn;
GT_UpdInfoUpdateAllData: TcxGridDBColumn;
cbUpdateAllData: TRzCheckBox;
lng_Forms: TsiLangLinked;
btAsNewFromFile: TRzButton;
OpenDialog: TOpenDialog;
edSeparator: TRzEdit;
Label11: TLabel;
TabSheet1: TRzTabSheet;
Label12: TLabel;
edUpdateTableName: TRzEdit;
edSrcCSVFile: TRzButtonEdit;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
edUpdateKeyField: TRzEdit;
lvUpdateFields: TListView;
btUpdateTableFromCSVFile: TRzBitBtn;
lbUpdateFromCSVLog: TListBox;
Label17: TLabel;
pmnuLVUpdateFields: TPopupMenu;
miSetPriorFiled: TMenuItem;
edOpenBracket: TRzEdit;
Label18: TLabel;
edCloseBracket: TRzEdit;
TabSheet2: TRzTabSheet;
RzPageControl2: TRzPageControl;
TabSheet3: TRzTabSheet;
TabSheet4: TRzTabSheet;
Label19: TLabel;
cbSrcLang: TRzComboBox;
btSetValuesFromLngFld: TRzBitBtn;
cbNotWriteEmptyValues: TRzCheckBox;
Label20: TLabel;
Label21: TLabel;
edDirToExport: TRzButtonEdit;
btExportTextFields: TRzBitBtn;
Label22: TLabel;
lbExportTextValueFields: TListBox;
cbDelSrcFields: TRzCheckBox;
cbPackBase: TRzCheckBox;
btCheckCyrillic: TRzBitBtn;
meSetTextValuesToActualFields: TMemo;
SetValuesToLngFld: TRzBitBtn;
TabSheet5: TRzTabSheet;
RzGroupBox5: TRzGroupBox;
Label23: TLabel;
edComponImagesFolder: TRzEdit;
btChoiceComponImagesFolder: TSpeedButton;
RzGroupBox6: TRzGroupBox;
btImgByArtProducer: TRzRadioButton;
btImgByArtDistributor: TRzRadioButton;
btComponImgImport: TRzButton;
RzGroupBox7: TRzGroupBox;
lbComponImgImportLog: TRzListBox;
RzGroupBox8: TRzGroupBox;
Label24: TLabel;
btSelectGuideFilesDir: TSpeedButton;
edGuideFilesRootDir: TRzEdit;
btImportGuideFiles: TRzButton;
cbGuideFileType: TRzComboBox;
Label25: TLabel;
btObjIconNameArticuls: TButton;
btGetNBTreeCompons: TButton;
meLog: TMemo;
procedure FormCreate(Sender: TObject);
procedure GT_UpdStructInfoFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure btAddAsNewClick(Sender: TObject);
procedure btUpdateClick(Sender: TObject);
procedure btDeleteClick(Sender: TObject);
procedure RzGroupBox1Resize(Sender: TObject);
procedure btUpdInfoAsNewClick(Sender: TObject);
procedure btUpdInfoUpdateClick(Sender: TObject);
procedure btUpdInfoDeleteClick(Sender: TObject);
procedure btUpdInfoRelAsNewClick(Sender: TObject);
procedure btUpdInfoRelUpdateClick(Sender: TObject);
procedure btUpdInfoRelDeleteClick(Sender: TObject);
procedure GT_UpdInfoTABLE_TYPEGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure GT_UpdInfoRelRELATION_TYPEGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure GT_UpdInfoFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure GT_UpdInfoRelFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure btCleatScriptClick(Sender: TObject);
procedure btAsNewFromFileClick(Sender: TObject);
procedure edSrcCSVFileButtonClick(Sender: TObject);
procedure btUpdateTableFromCSVFileClick(Sender: TObject);
procedure miSetPriorFiledClick(Sender: TObject);
procedure lvUpdateFieldsMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure btSetValuesFromLngFldClick(Sender: TObject);
procedure btExportTextFieldsClick(Sender: TObject);
procedure btCheckCyrillicClick(Sender: TObject);
procedure SetValuesToLngFldClick(Sender: TObject);
procedure btChoiceComponImagesFolderClick(Sender: TObject);
procedure btComponImgImportClick(Sender: TObject);
procedure btSelectGuideFilesDirClick(Sender: TObject);
procedure btImportGuideFilesClick(Sender: TObject);
procedure btObjIconNameArticulsClick(Sender: TObject);
procedure btGetNBTreeComponsClick(Sender: TObject);
private
GForm: TForm;
FSprTablesTextColumnsInfo: TObjectList;
FTablesTextColumnsInfo: TObjectList;
procedure AddEditUpdInfo(AMakeEdit: TMakeEdit);
procedure AddEditUpdInfoRel(AMakeEdit: TMakeEdit);
procedure AddEditUpdStructInfo(AMakeEdit: TMakeEdit);
procedure SetControlsUpdInfo(ARecordToControls: Boolean);
procedure SetControlsUpdInfoRel(ARecordToControls: Boolean);
procedure SetControlsUpdStructInfo(ARecordToControls: Boolean);
procedure ImportGuideFiles(const ADirName: string; AIDDestDirType, AFType: Integer; AFileCount: PInteger);
public
constructor Create(AOwner: TComponent; AForm: TForm); overload;
destructor Destroy; override;
procedure Execute;
end;
//var
//F_ConfiguratorUpdatetInfo: TF_ConfiguratorUpdatetInfo;
implementation
Uses U_Main, Unit_DM_SCS, U_ProtectionCommon;//, bz2;
{$R *.dfm}
{ TTableTextColumnsInfo }
constructor TTableTextColumnsInfo.Create;
begin
inherited;
TableName := '';
TextFields := TStringList.Create;
end;
destructor TTableTextColumnsInfo.Destroy;
begin
FreeAndNil(TextFields);
inherited;
end;
{ TF_ConfiguratorUpdatetInfo }
constructor TF_ConfiguratorUpdateInfo.Create(AOwner: TComponent;
AForm: TForm);
begin
GForm := AForm;
inherited Create(AOwner);
end;
destructor TF_ConfiguratorUpdateInfo.Destroy;
begin
FreeAndNil(FSprTablesTextColumnsInfo);
ClearComboBoxRz(cbGuideFileType);
inherited;
end;
procedure TF_ConfiguratorUpdateInfo.Execute;
begin
cbIncSortIDBeforeNew.Checked := false;
cbUpdInfoIncBeforeNew.Checked := false;
SetControlsUpdInfo(true);
SetControlsUpdInfoRel(true);
SetControlsUpdStructInfo(true);
ShowModal;
end;
procedure TF_ConfiguratorUpdateInfo.FormCreate(Sender: TObject);
var
TableTextColumnsInfo: TTableTextColumnsInfo;
function AddTableTextColumnInfoToList(ATableName: String; ATablesTextColumnsInfo: TObjectList): TTableTextColumnsInfo;
begin
Result := TTableTextColumnsInfo.Create;
Result.TableName := ATableName;
ATablesTextColumnsInfo.Add(Result);
end;
begin
// Tolik 01/11/2019 --
seBuildID.Max := 10000000000;
seBuildID.Min := 0;
seSortID.Min := 0;
seSortID.Max := 10000000000;
seUpdInfoSortID.Max := 10000000000;
seUpdInfoSortID.Min := 0;
seUpdInfoRel.Min := 0;
seUpdInfoRel.Max := 10000000000;
//
GT_UpdStructInfo.DataController.DataSource := TF_Main(GForm).DM.dsrcUpdStructInfo;
GT_UpdInfo.DataController.DataSource := TF_Main(GForm).DM.dSrcUpdInfo;
GT_UpdInfoRel.DataController.DataSource := TF_Main(GForm).DM.dSrcUpdInfoRel;
FSprTablesTextColumnsInfo := TObjectList.Create(true);
FTablesTextColumnsInfo := TObjectList.Create(true);
//********************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ****************
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnDirectoryType, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnCurrency, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnNameBrief);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnProducers, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnDescription);
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnComponentTypes, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnNamePlural);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnCompTypePropRelation, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnPValue);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnInterfaceType, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnInterface, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnDescription);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnNetType, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnObjectIcons, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnProperties, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnIzm);
TableTextColumnsInfo.TextFields.Add(fnDefValue);
TableTextColumnsInfo.TextFields.Add(fnDescription);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnDataType, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
// <20><><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnNBNorms, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnIzm);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnNBResources, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnIzm);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnSuppliesKinds, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnIzm);
TableTextColumnsInfo.TextFields.Add(fnNameTradUOM);
TableTextColumnsInfo.TextFields.Add(fnIzmTradUOM);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnInputStrings, FSprTablesTextColumnsInfo);
TableTextColumnsInfo.TextFields.Add(fnName);
//********************** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **************************
// <20><><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnCatalog, FSprTablesTextColumnsInfo{FTablesTextColumnsInfo});
TableTextColumnsInfo.TextFields.Add(fnName);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnComponent, FSprTablesTextColumnsInfo{FTablesTextColumnsInfo});
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnNameShort);
TableTextColumnsInfo.TextFields.Add(fnIzm);
TableTextColumnsInfo.TextFields.Add(fnNotice);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnInterfaceRelation, FSprTablesTextColumnsInfo{FTablesTextColumnsInfo});
TableTextColumnsInfo.TextFields.Add(fnNotice);
TableTextColumnsInfo.TextFields.Add(fnSideSection);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnCompPropRelation, FSprTablesTextColumnsInfo{FTablesTextColumnsInfo});
TableTextColumnsInfo.TextFields.Add(fnPValue);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TableTextColumnsInfo := AddTableTextColumnInfoToList(tnResources, FSprTablesTextColumnsInfo{FTablesTextColumnsInfo});
TableTextColumnsInfo.TextFields.Add(fnName);
TableTextColumnsInfo.TextFields.Add(fnIzm);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cbSrcLang.Items.Add('ENG');
//cbSrcLang.Items.Add('SPA');
cbSrcLang.ItemIndex := 0;
cbGuideFileType.Items.Clear;
AddIDToComboRz(gftCompSpecification, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', cbGuideFileType);
cbGuideFileType.ItemIndex := 0;
end;
procedure TF_ConfiguratorUpdateInfo.GT_UpdStructInfoFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
SetControlsUpdStructInfo(true);
end;
procedure TF_ConfiguratorUpdateInfo.AddEditUpdInfo(AMakeEdit: TMakeEdit);
var
GridFocusedRecordChangedEvent: TcxGridFocusedRecordChangedEvent;
begin
GridFocusedRecordChangedEvent := GT_UpdInfo.OnFocusedRecordChanged;
GT_UpdInfo.OnFocusedRecordChanged := nil;
try
with TF_Main(GForm).DM do
begin
case AMakeEdit of
meMake:
dsetUpdInfo.Append;
meEdit:
dsetUpdInfo.Edit;
end;
if dsetUpdInfo.State <> dsBrowse then
begin
dsetUpdInfo.FN(fnIsOn).AsInteger := BoolToInt(cbUpdInfoIsOn.Checked);
dsetUpdInfo.FN(fnTableName).AsString := edUpdInfoTableName.Text;
dsetUpdInfo.FN(fnGeneratorName).AsString := edUpdInfoGeneratorName.Text;
dsetUpdInfo.FN(fnTableType).AsInteger := rgUpdInfoTableType.ItemIndex + 1;
dsetUpdInfo.FN(fnUpdateAllData).AsInteger := BoolToInt(cbUpdateAllData.Checked);
dsetUpdInfo.FN(fnSortID).AsInteger := Round(seUpdInfoSortID.Value);
dsetUpdInfo.Post;
end;
end;
except
on E: Exception do AddExceptionToLog('TF_ConfiguratorUpdateInfo.AddEditUpdInfo: '+E.Message);
end;
GT_UpdInfo.OnFocusedRecordChanged := GridFocusedRecordChangedEvent;
end;
procedure TF_ConfiguratorUpdateInfo.AddEditUpdInfoRel(AMakeEdit: TMakeEdit);
var
GridFocusedRecordChangedEvent: TcxGridFocusedRecordChangedEvent;
begin
GridFocusedRecordChangedEvent := GT_UpdInfoRel.OnFocusedRecordChanged;
GT_UpdInfoRel.OnFocusedRecordChanged := nil;
try
with TF_Main(GForm).DM do
begin
case AMakeEdit of
meMake:
dsetUpdInfoRel.Append;
meEdit:
dsetUpdInfoRel.Edit;
end;
if dsetUpdInfoRel.State <> dsBrowse then
begin
dsetUpdInfoRel.FN(fnRelationType).AsInteger := rgUpdInfoRelRelationType.ItemIndex + 1;
dsetUpdInfoRel.FN(fnRelTableName).AsString := edUpdInfoRelTableName.Text;
dsetUpdInfoRel.FN(fnRelFieldName).AsString := edUpdInfoRelFieldName.Text;
dsetUpdInfoRel.FN(fnSortID).AsInteger := Round(seUpdInfoRel.Value);
dsetUpdInfoRel.Post;
end;
end;
except
on E: Exception do AddExceptionToLog('TF_ConfiguratorUpdateInfo.AddEditUpdInfoRel: '+E.Message);
end;
GT_UpdInfoRel.OnFocusedRecordChanged := GridFocusedRecordChangedEvent;
end;
procedure TF_ConfiguratorUpdateInfo.AddEditUpdStructInfo(AMakeEdit: TMakeEdit);
var
Stream: TMemoryStream;
GridFocusedRecordChangedEvent: TcxGridFocusedRecordChangedEvent;
begin
GridFocusedRecordChangedEvent := GT_UpdStructInfo.OnFocusedRecordChanged;
GT_UpdStructInfo.OnFocusedRecordChanged := nil;
try
with TF_Main(GForm).DM do
begin
case AMakeEdit of
meMake:
dsetUpdStructInfo.Append;
meEdit:
dsetUpdStructInfo.Edit;
end;
if dsetUpdStructInfo.State <> dsBrowse then
begin
dsetUpdStructInfo.FN(fnDateEntry).AsDateTime := deDateEntry.Date;
dsetUpdStructInfo.FN(fnBuildID).AsInteger := Round(seBuildID.Value);
dsetUpdStructInfo.FN(fnSortID).AsInteger := Round(seSortID.Value);
Stream := TMemoryStream.Create;
try
meScript.Lines.SaveToStream(Stream);
Stream.Position := 0;
TBlobField(dsetUpdStructInfo.FN(fnScript)).LoadFromStream(Stream);
finally
FreeAndNil(Stream);
end;
dsetUpdStructInfo.Post;
end;
end;
except
on E: Exception do AddExceptionToLog('TF_ConfiguratorUpdateInfo.AddEditUpdStructInfo: '+E.Message);
end;
GT_UpdStructInfo.OnFocusedRecordChanged := GridFocusedRecordChangedEvent;
end;
procedure TF_ConfiguratorUpdateInfo.SetControlsUpdInfo(ARecordToControls: Boolean);
begin
with TF_Main(GForm).DM do
begin
btUpdInfoUpdate.Enabled := (dsetUpdInfo.RecordCount > 0);
btUpdInfoDelete.Enabled := (dsetUpdInfo.RecordCount > 0);
if ARecordToControls and (dsetUpdInfo.RecordCount > 0) then
begin
cbUpdInfoIsOn.Checked := IntToBool(dsetUpdInfo.FN(fnIsOn).AsInteger);
edUpdInfoTableName.Text := dsetUpdInfo.FN(fnTableName).AsString;
edUpdInfoGeneratorName.Text := dsetUpdInfo.FN(fnGeneratorName).AsString;
rgUpdInfoTableType.ItemIndex := dsetUpdInfo.FN(fnTableType).AsInteger - 1;
cbUpdateAllData.Checked := IntToBool(dsetUpdInfo.FN(fnUpdateAllData).AsInteger);
seUpdInfoSortID.Value := dsetUpdInfo.FN(fnSortID).AsInteger;
end;
end;
end;
procedure TF_ConfiguratorUpdateInfo.SetControlsUpdInfoRel(ARecordToControls: Boolean);
begin
with TF_Main(GForm).DM do
begin
btUpdInfoRelAsNew.Enabled := (dsetUpdInfo.RecordCount > 0);
btUpdInfoRelUpdate.Enabled := (dsetUpdInfoRel.RecordCount > 0);
btUpdInfoRelDelete.Enabled := (dsetUpdInfoRel.RecordCount > 0);
if ARecordToControls and (dsetUpdInfoRel.RecordCount > 0) then
begin
rgUpdInfoRelRelationType.ItemIndex := dsetUpdInfoRel.FN(fnRelationType).AsInteger - 1;
edUpdInfoRelTableName.Text := dsetUpdInfoRel.FN(fnRelTableName).AsString;
edUpdInfoRelFieldName.Text := dsetUpdInfoRel.FN(fnRelFieldName).AsString;
seUpdInfoRel.Value := dsetUpdInfoRel.FN(fnSortID).AsInteger;
end;
end;
end;
procedure TF_ConfiguratorUpdateInfo.SetControlsUpdStructInfo(ARecordToControls: Boolean);
var
Stream: TMemoryStream;
begin
with TF_Main(GForm).DM do
begin
btUpdate.Enabled := (dsetUpdStructInfo.RecordCount > 0);
btDelete.Enabled := (dsetUpdStructInfo.RecordCount > 0);
if ARecordToControls and (dsetUpdStructInfo.RecordCount > 0) then
begin
deDateEntry.Date := dsetUpdStructInfo.FN(fnDateEntry).AsDateTime;
seBuildID.Value := dsetUpdStructInfo.FN(fnBuildID).AsInteger;
seSortID.Value := dsetUpdStructInfo.FN(fnSortID).AsInteger;
Stream := TMemoryStream.Create;
try
TBlobField(dsetUpdStructInfo.FN(fnScript)).SaveToStream(Stream);
Stream.Position := 0;
meScript.Lines.LoadFromStream(Stream);
finally
FreeAndNil(Stream);
end;
end;
end;
end;
procedure TF_ConfiguratorUpdateInfo.ImportGuideFiles(const ADirName: string; AIDDestDirType, AFType: Integer; AFileCount: PInteger);
var
DirName: String;
CanGrab: Boolean;
fs: TSearchRec;
FileName: String;
FileExt: String;
FileStream: TFileStream;
NewGuideFileID: Integer;
DirItemType: Integer;
IDDestDirType: Integer;
procedure ShowMsg(const AMsg: String);
begin
MessageInfo(AMsg);
CanGrab := false;
end;
begin
CanGrab := true;
if Not DirectoryExists(ADirName) then
ShowMsg('<27><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
if CanGrab then
begin
DirName := IncludeTrailingBackslash(ADirName);
DirItemType := GetDirItemTypeByGuideFileType(AFType);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDDestDirType := TF_Main(GForm).FNormBase.DM.InsertDirTypeFolder(ExtractDirName(DirName), DirItemType, AIDDestDirType);
if FindFirst(DirName+'*.*', faAnyFile - faVolumeID, fs) = 0 then
repeat
if (fs.Name <> '..') then
begin
if (fs.Attr and faDirectory = 0) then
begin
FileName := ExtractFileNameOnly(fs.Name);
FileExt := ExtractFileExt(fs.Name);
if AnsiLowerCase(FileExt) = '.doc' then
begin
FileStream := TFileStream.Create(DirName + fs.Name, fmOpenRead);
FileStream.Position := 0;
try
NewGuideFileID := TF_Main(GForm).FNormBase.DM.SaveGuideFile(0, AFType, FileName, FileExt, nil, FileStream, false);
if NewGuideFileID <> 0 then
begin
TF_Main(GForm).FNormBase.DM.InsertToDirecoryTypeRel(IDDestDirType, NewGuideFileID, GetMasterFNameByDirItemType(DirItemType));
if AFileCount <> nil then
AFileCount^ := AFileCount^ + 1;
end;
finally
FileStream.Free;
end;
end;
end
else
if (fs.Attr and faDirectory = faDirectory) and (fs.Name <> '.') then
begin
ImportGuideFiles(DirName + fs.Name, IDDestDirType, AFType, AFileCount);
end;
end;
until FindNext(fs) <> 0;
FindClose(fs);
end;
end;
procedure TF_ConfiguratorUpdateInfo.btAddAsNewClick(Sender: TObject);
begin
if cbIncSortIDBeforeNew.Checked then
seSortID.Value := seSortID.Value + 1;
AddEditUpdStructInfo(meMake);
end;
procedure TF_ConfiguratorUpdateInfo.btUpdateClick(Sender: TObject);
begin
AddEditUpdStructInfo(meEdit);
end;
procedure TF_ConfiguratorUpdateInfo.btDeleteClick(Sender: TObject);
begin
if MessageModal(cConfiguratorUpdateInfo_Msg1, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
TF_Main(GForm).DM.dsetUpdStructInfo.Delete;
end;
procedure TF_ConfiguratorUpdateInfo.RzGroupBox1Resize(Sender: TObject);
begin
SetMiddleControlChilds(TControl(Sender), TControl(Self));
end;
procedure TF_ConfiguratorUpdateInfo.btUpdInfoAsNewClick(Sender: TObject);
begin
if cbUpdInfoIncBeforeNew.Checked then
seUpdInfoSortID.Value := seUpdInfoSortID.Value + 1;
AddEditUpdInfo(meMake);
end;
procedure TF_ConfiguratorUpdateInfo.btUpdInfoUpdateClick(Sender: TObject);
begin
AddEditUpdInfo(meEdit);
end;
procedure TF_ConfiguratorUpdateInfo.btUpdInfoDeleteClick(Sender: TObject);
begin
if MessageModal(cConfiguratorUpdateInfo_Msg1, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
TF_Main(GForm).DM.dsetUpdInfo.Delete;
end;
procedure TF_ConfiguratorUpdateInfo.btUpdInfoRelAsNewClick(
Sender: TObject);
begin
AddEditUpdInfoRel(meMake);
end;
procedure TF_ConfiguratorUpdateInfo.btUpdInfoRelUpdateClick(
Sender: TObject);
begin
AddEditUpdInfoRel(meEdit);
end;
procedure TF_ConfiguratorUpdateInfo.btUpdInfoRelDeleteClick(
Sender: TObject);
begin
if MessageModal(cConfiguratorUpdateInfo_Msg1, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
TF_Main(GForm).DM.dsetUpdInfoRel.Delete;
end;
procedure TF_ConfiguratorUpdateInfo.GT_UpdInfoTABLE_TYPEGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
if AText = '1' then
AText := cConfiguratorUpdateInfo_Msg2_1;
if AText = '2' then
AText := cConfiguratorUpdateInfo_Msg2_2;
end;
procedure TF_ConfiguratorUpdateInfo.GT_UpdInfoRelRELATION_TYPEGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
if AText = '1' then
AText := 'Detail';
if AText = '2' then
AText := 'Directory';
end;
procedure TF_ConfiguratorUpdateInfo.GT_UpdInfoFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
SetControlsUpdInfo(true);
SetControlsUpdInfoRel(true);
end;
procedure TF_ConfiguratorUpdateInfo.GT_UpdInfoRelFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
SetControlsUpdInfoRel(true);
end;
procedure TF_ConfiguratorUpdateInfo.btCleatScriptClick(Sender: TObject);
begin
meScript.Lines.Clear;
meScript.SetFocus;
end;
procedure TF_ConfiguratorUpdateInfo.btAsNewFromFileClick(Sender: TObject);
var
FHandle: TextFile;
Buffer: string;
BufferLength: Integer;
ch: Char;
SeparatorStr: String;
SeparatorLength: Integer;
CmpPos: Integer;
IsLoadingScript: Boolean;
IsSeparator: Boolean;
Stream: TMemoryStream;
begin
{$if Defined(ES_GRAPH_SC)}
OpenDialog.InitialDir := ExeDir;
{$else}
OpenDialog.InitialDir := ExtractFileDir(ParamStr(0));
{$ifend}
if OpenDialog.Execute then
begin
Buffer := '';
SeparatorStr := edSeparator.Text;
SeparatorLength := Length(SeparatorStr);
AssignFile(FHandle, OpenDialog.FileName);
Reset(FHandle);
IsLoadingScript := false;
CmpPos := 1;
GT_UpdStructInfo.OnFocusedRecordChanged := nil;
try
while Not Eof(FHandle) do
begin
Read(FHandle, ch);
Buffer := Buffer + ch;
BufferLength := Length(Buffer);
IsSeparator := false;
if ch = SeparatorStr[CmpPos] then
begin
Inc(CmpPos);
if CmpPos > SeparatorLength then
begin
CmpPos := 1;
IsSeparator := true;
if BufferLength >= SeparatorLength then
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetLength(Buffer, BufferLength - SeparatorLength);
end;
end
else
CmpPos := 1;
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Eof(FHandle) then
IsSeparator := true;
if IsSeparator then
begin
if Buffer <> '' then
begin
if cbIncSortIDBeforeNew.Checked then
seSortID.Value := seSortID.Value + 1;
TF_Main(GForm).DM.dsetUpdStructInfo.Append;
TF_Main(GForm).DM.dsetUpdStructInfo.FN(fnDateEntry).AsDateTime := deDateEntry.Date;
TF_Main(GForm).DM.dsetUpdStructInfo.FN(fnBuildID).AsInteger := Round(seBuildID.Value);
TF_Main(GForm).DM.dsetUpdStructInfo.FN(fnSortID).AsInteger := Round(seSortID.Value);
Stream := TMemoryStream.Create;
Stream.WriteBuffer(PChar(Buffer)^, Length(Buffer));
Stream.Position := 0;
//TBlobField(TF_Main(GForm).DM.dsetUpdStructInfo.FN(fnScript)).AsString := Buffer;
TBlobField(TF_Main(GForm).DM.dsetUpdStructInfo.FN(fnScript)).LoadFromStream(Stream);
TF_Main(GForm).DM.dsetUpdStructInfo.Post;
FreeAndNil(Stream);
end;
Buffer := '';
end;
end;
finally
GT_UpdStructInfo.OnFocusedRecordChanged := GT_UpdStructInfoFocusedRecordChanged;
end;
CloseFile(FHandle);
end;
end;
procedure TF_ConfiguratorUpdateInfo.edSrcCSVFileButtonClick(
Sender: TObject);
var
OpenDialog: TOpenDialog;
FileHandler: TextFile;
FirstStr: String;
StringSections: TStringList;
HaveEmptySection: Boolean;
i, j: integer;
PosNamePref: Integer;
NearFieldName: String;
ListItem: TListitem;
begin
OpenDialog := TOpenDialog.Create(Self);
try
OpenDialog.Filter := 'CSV files (*.csv)|*.csv';
if OpenDialog.Execute then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
FirstStr := '';
AssignFile(FileHandler, OpenDialog.FileName);
Reset(FileHandler);
try
while Not Eof(FileHandler) do
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ReadLn(FileHandler, FirstStr);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
StringSections := GetStringsFromStr(FirstStr, ';', false);
try
if StringSections.Count > 0 then
begin
edSrcCSVFile.Text := OpenDialog.FileName;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
edUpdateTableName.Text := AnsiUpperCase(ExtractFileNameOnly(OpenDialog.FileName));
lvUpdateFields.Items.Clear;
for i := 0 to StringSections.Count - 1 do
begin
if i = 0 then
edUpdateKeyField.Text := StringSections[i]
else
begin
ListItem := lvUpdateFields.Items.Add;
ListItem.Checked := false;
ListItem.Caption := StringSections[i];
NearFieldName := StringSections[i];
for j := 0 to cbSrcLang.Items.Count - 1 do
begin
PosNamePref := Pos('_'+cbSrcLang.Items[j], NearFieldName);
if PosNamePref <> 0 then
begin
Delete(NearFieldName, PosNamePref, Length(NearFieldName)-(PosNamePref-1) );
if ListItem.SubItems.Count = 0 then
ListItem.SubItems.Add('');
ListItem.SubItems[0] := NearFieldName;
Break; //// BREAK ////
end;
end;
end;
end;
Break; //// BREAK ////
end;
finally
FreeAndNil(StringSections);
end;
end;
finally
CloseFile(FileHandler);
end;
end;
finally
OpenDialog.Free;
end;
end;
procedure TF_ConfiguratorUpdateInfo.btUpdateTableFromCSVFileClick(
Sender: TObject);
var
FieldCountToUpd: Integer;
QSelect: TpFIBQuery;
QOperat: TpFIBQuery;
i, j: Integer;
CurrFieldName: String;
PriorFieldName: String;
FieldPosition: Integer;
KeyFieldName: String;
UpdateFieldNames: TStringList;
SrcFileStrings: TStringList;
FieldListFromFile: TStringList;
StrSections: TStringList;
KeyFieldIndex: Integer;
KeyFieldValue: String;
FieldIndex: Integer;
UpdFieldValue: String;
UpdatedRecordCount: Integer;
IsLoadedRecord: Boolean;
NewFldLength: Integer;
SrcFldName: String;
begin
try
lbUpdateFromCSVLog.Items.Clear;
QSelect := TF_Main(GForm).DM.Query_Select;
QOperat := TF_Main(GForm).DM.Query_Operat;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
FieldCountToUpd := 0;
for i := 0 to lvUpdateFields.Items.Count - 1 do
if lvUpdateFields.Items[i].Checked then
Inc(FieldCountToUpd);
if FieldCountToUpd = 0 then
lbUpdateFromCSVLog.Items.Add('<27><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>')
else
if Not CheckExistsTableInBase(TF_Main(GForm).DM.Query_Select, edUpdateTableName.Text) then
lbUpdateFromCSVLog.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>')
else
if Not CheckFieldInTable(edUpdateTableName.Text, edUpdateKeyField.Text, TF_Main(GForm).DM.Query_Select) then
lbUpdateFromCSVLog.Items.Add('<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>')
else
if Not FileExists(edSrcCSVFile.Text) then
lbUpdateFromCSVLog.Items.Add('<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+edSrcCSVFile.Text)
else
begin
lbUpdateFromCSVLog.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>');
UpdateFieldNames := TStringList.Create;
SrcFileStrings := TStringList.Create;
SrcFileStrings.LoadFromFile(edSrcCSVFile.Text);
KeyFieldName := edUpdateKeyField.Text;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
for i := 0 to lvUpdateFields.Items.Count - 1 do
if lvUpdateFields.Items[i].Checked then
begin
CurrFieldName := lvUpdateFields.Items[i].Caption;
if Not CheckFieldInTable(edUpdateTableName.Text, CurrFieldName, TF_Main(GForm).DM.Query_Select) then
begin
NewFldLength := 255;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if Length(CurrFieldName) > 4 then
begin
SrcFldName := CurrFieldName;
Delete(SrcFldName, Length(SrcFldName)-3, 4);
if CheckFieldInTable(edUpdateTableName.Text, SrcFldName, TF_Main(GForm).DM.Query_Select) then
begin
NewFldLength := GetFieldLengthInTable(edUpdateTableName.Text, SrcFldName, TF_Main(GForm).DM.Query_Select);
end;
end;
lbUpdateFromCSVLog.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+CurrFieldName);
TF_Main(GForm).DM.AddFieldToTable(edUpdateTableName.Text, CurrFieldName, ftString, NewFldLength);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
PriorFieldName := '';
if lvUpdateFields.Items[i].SubItems.Count > 0 then
PriorFieldName := lvUpdateFields.Items[i].SubItems[0];
if PriorFieldName <> '' then
begin
if CheckFieldInTable(edUpdateTableName.Text, PriorFieldName, TF_Main(GForm).DM.Query_Select) then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
FieldPosition := GetFieldPositionInTable(edUpdateTableName.Text, PriorFieldName, TF_Main(GForm).DM.Query_Select);
if FieldPosition <> -1 then
begin
Inc(FieldPosition, 2);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
SetFieldPositionInTable(edUpdateTableName.Text, CurrFieldName, FieldPosition, QOperat);
end;
end;
end;
end;
UpdateFieldNames.Add(CurrFieldName);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetSQLToFIBQuery(QOperat, GetSQLByParams(qtUpdate, edUpdateTableName.Text,
KeyFieldName+' = :'+KeyFieldName, UpdateFieldNames, ''), false);
//SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, edUpdateTableName.Text,
// KeyFieldName+' = :'+KeyFieldName, UpdateFieldNames, ''), false);
FieldListFromFile := nil;
KeyFieldIndex := -1;
UpdatedRecordCount := 0;
for i := 0 to SrcFileStrings.Count - 1 do
begin
StrSections := nil;
if FieldListFromFile = nil then
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
StrSections := GetStringsFromStr(SrcFileStrings[i], ';', false)
else
StrSections := GetStringsFromStr(SrcFileStrings[i], ';', true);
if StrSections.Count = 0 then
FreeAndNil(StrSections)
else
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if FieldListFromFile = nil then
begin
FieldListFromFile := StrSections;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
KeyFieldIndex := FieldListFromFile.IndexOf(KeyFieldName);
if KeyFieldIndex = -1 then
Break; //// BREAK ////
end
else
begin
KeyFieldValue := StrSections[KeyFieldIndex];
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeyFieldValue := RemoveSymbolFromStr(KeyFieldValue, ' ');
if Length(KeyFieldValue) > 0 then
begin
if edOpenBracket.Text <> '' then
if KeyFieldValue[1] <> edOpenBracket.Text[1] then
KeyFieldValue := edOpenBracket.Text[1] + KeyFieldValue;
if edCloseBracket.Text <> '' then
if KeyFieldValue[Length(KeyFieldValue)] <> edCloseBracket.Text[1] then
KeyFieldValue := KeyFieldValue + edCloseBracket.Text[1];
end;
lbUpdateFromCSVLog.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> '+KeyFieldName+' = '+KeyFieldValue);
IsLoadedRecord := false;
QOperat.Close;
QOperat.ParamByName(KeyFieldName).Value := KeyFieldValue;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
for j := 0 to UpdateFieldNames.Count - 1 do
if UpdateFieldNames[j] <> KeyFieldName then
begin
UpdFieldValue := '';
FieldIndex := FieldListFromFile.IndexOf(UpdateFieldNames[j]);
if FieldIndex <> -1 then
if FieldIndex <= (StrSections.Count - 1) then
UpdFieldValue := StrSections[FieldIndex];
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (UpdFieldValue = '') and cbNotWriteEmptyValues.Checked then
begin
if Not IsLoadedRecord then
begin
QSelect.Close;
QSelect.Params[0].Value := KeyFieldValue;
QSelect.ExecQuery;
IsLoadedRecord := true;
end;
if QSelect.RecordCount > 0 then
UpdFieldValue := QSelect.FN(UpdateFieldNames[j]).Value;
end;}
QOperat.ParamByName(UpdateFieldNames[j]).AsString := UpdFieldValue;
end;
QOperat.ExecQuery;
//QSelect.Close;
Inc(UpdatedRecordCount);
FreeAndNil(StrSections);
end;
end;
end;
QOperat.Close;
lbUpdateFromCSVLog.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+IntToStr(UpdatedRecordCount)+' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
if FieldListFromFile <> nil then
FreeAndNil(FieldListFromFile);
FreeAndNil(UpdateFieldNames);
end;
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btUpdateTableFromCSVFileClick', E.Message);
end;
end;
procedure TF_ConfiguratorUpdateInfo.miSetPriorFiledClick(Sender: TObject);
var
NewFieldName: String;
begin
NewFieldName := InputBox(ApplicationName, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>', '');
if NewFieldName <> '' then
begin
if lvUpdateFields.Selected.SubItems.Count = 0 then
lvUpdateFields.Selected.SubItems.Add('');
lvUpdateFields.Selected.SubItems[0] := NewFieldName;
end;
end;
procedure TF_ConfiguratorUpdateInfo.lvUpdateFieldsMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
var
ItemFromCursor: TListItem;
ScrPoint: TPoint;
begin
if Button = mbRight then
begin
ItemFromCursor := lvUpdateFields.GetItemAt(X, Y);
if ItemFromCursor <> nil then
lvUpdateFields.Selected := ItemFromCursor;
GetCursorPos(ScrPoint);
pmnuLVUpdateFields.Popup(ScrPoint.X, ScrPoint.Y);
end;
end;
procedure TF_ConfiguratorUpdateInfo.btSetValuesFromLngFldClick(
Sender: TObject);
var
i, j, k: Integer;
TableTextColumnsInfo: TTableTextColumnsInfo;
FieldListToSel: TStringList;
FieldListToUpd: TStringList;
SelectedGUIDs: TStringList;
SelectedFieldValues: TStringList;
FieldValue: String;
QSelect: TpFIBQuery;
QOperat: TpFIBQuery;
begin
try
FieldListToSel := TStringList.Create;
FieldListToUpd := TStringList.Create;
SelectedGUIDs := TStringList.Create;
SelectedFieldValues := TStringList.Create;
QSelect := TF_Main(GForm).DM.Query_Select;
QOperat := TF_Main(GForm).DM.Query_Operat;
meSetTextValuesToActualFields.Clear;
meSetTextValuesToActualFields.Lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Screen.Cursor := crHourGlass;
try
for i := 0 to FSprTablesTextColumnsInfo.Count - 1 do
begin
TableTextColumnsInfo := TTableTextColumnsInfo(FSprTablesTextColumnsInfo[i]);
meSetTextValuesToActualFields.Lines.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
FieldListToSel.Clear;
FieldListToUpd.Clear;
//FieldListToSel.Add(fnGuid);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
//begin
// FieldListToSel.Add(TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Text);
// FieldListToUpd.Add(TableTextColumnsInfo.TextFields[j]);
//end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
begin
meSetTextValuesToActualFields.Lines.Add(DupStr(' ', 6)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> '+
TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Text+' <20> <20><><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TextFields[j]);
FieldListToSel.Clear;
FieldListToSel.Add(fnGuid);
FieldListToSel.Add(TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Text);
FieldListToUpd.Add(TableTextColumnsInfo.TextFields[j]);
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, TableTextColumnsInfo.TableName,
'', FieldListToSel, ''), true);
SelectedGUIDs.Clear;
SelectedFieldValues.Clear;
while Not QSelect.Eof do
begin
SelectedGUIDs.Add(QSelect.FieldByName(FieldListToSel[0]).AsString);
SelectedFieldValues.Add(QSelect.FieldByName(FieldListToSel[1]).AsString);
QSelect.Next;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
SetSQLToFIBQuery(QOperat, GetSQLByParams(qtUpdate, TableTextColumnsInfo.TableName,
fnGUID+' = :'+fnGUID, nil, TableTextColumnsInfo.TextFields[j]), false);
for k := 0 to SelectedGUIDs.Count - 1 do
begin
if (SelectedFieldValues[k] <> '') or Not cbNotWriteEmptyValues.Checked then
begin
QOperat.Close;
QOperat.ParamByName(fnGUID).AsString := SelectedGUIDs[k];
QOperat.ParamByName(TableTextColumnsInfo.TextFields[j]).AsString := SelectedFieldValues[k];
QOperat.ExecQuery;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btSetTextValuesToFieldsClick', E.Message);
end;
end;
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
end;
meSetTextValuesToActualFields.Lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
if cbDelSrcFields.Checked then
begin
meSetTextValuesToActualFields.lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>');
for i := 0 to FSprTablesTextColumnsInfo.Count - 1 do
begin
TableTextColumnsInfo := TTableTextColumnsInfo(FSprTablesTextColumnsInfo[i]);
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 3)+ '<27><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
for k := 0 to cbSrcLang.Items.Count - 1 do
begin
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 6) + TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Items[k]);
if CheckFieldInTable(TableTextColumnsInfo.TableName, TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Items[k], QSelect) then
DelFieldFromTable(TableTextColumnsInfo.TableName, TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Items[k], QOperat);
end;
end;
end;
finally
Screen.Cursor := crDefault;
end;
if cbPackBase.Checked then
F_NormBase.Act_PackBase.Execute;
FreeAndNil(SelectedGUIDs);
FreeAndNil(SelectedFieldValues);
FreeAndNil(FieldListToSel);
FreeAndNil(FieldListToUpd);
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btSetTextValuesToFieldsClick', E.Message);
end;
end;
procedure TF_ConfiguratorUpdateInfo.btExportTextFieldsClick(
Sender: TObject);
var
DirName: String;
TableFileName: String;
QSelect: TpFIBQuery;
TableTextColumnsInfo: TTableTextColumnsInfo;
SelectFieldNames: TStringList;
SelectCondition: String;
i, j, k: Integer;
IsCyrSymb: Boolean;
TableSavedRowCount: Integer;
FileHandler: TextFile;
begin
try
DirName := TF_Main(GForm).BrowseNewDirName('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>...',
'',
FileNameCorrect('NormBaseStrings'+' '+DateTimeToStr(Now)));
QSelect := TF_Main(GForm).DM.Query_Select;
if DirName <> '' then
begin
DirName := DirName + '\';
if Not DirectoryExists(DirName) then
CreateDir(DirName);
Screen.Cursor := crHourGlass;
try
lbExportTextValueFields.Clear;
lbExportTextValueFields.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
SelectFieldNames := TStringList.Create;
for i := 0 to FSprTablesTextColumnsInfo.Count - 1 do
begin
TableTextColumnsInfo := TTableTextColumnsInfo(FSprTablesTextColumnsInfo[i]);
lbExportTextValueFields.Items.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SelectFieldNames.Clear;
SelectFieldNames.Add(fnGUID);
for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
begin
SelectFieldNames.Add(TableTextColumnsInfo.TextFields[j]);
lbExportTextValueFields.Items.Add(DupStr(' ', 6)+ '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+SelectFieldNames[SelectFieldNames.Count-1]);
for k := 0 to cbSrcLang.Items.Count - 1 do
begin
SelectFieldNames.Add(TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Items[k]);
lbExportTextValueFields.Items.Add(DupStr(' ', 6)+
'<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+SelectFieldNames[SelectFieldNames.Count-1]+'_'+cbSrcLang.Items[k]);
end;
end;
//for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
// for k := 0 to cbSrcLang.Items.Count - 1 do
// begin
// SelectFieldNames.Add(TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Items[k]);
// lbExportTextValueFields.Items.Add(DupStr(' ', 6)+
// '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+SelectFieldNames[SelectFieldNames.Count-1]+'_'+cbSrcLang.Items[k]);
// end;
if TableTextColumnsInfo.TableName = tnProperties then
SelectFieldNames.Add(fnIDDataType);
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, TableTextColumnsInfo.TableName,
'', SelectFieldNames, ''), true);
if TableTextColumnsInfo.TableName = tnProperties then
SelectFieldNames.Delete(SelectFieldNames.Count-1);
TableFileName := DirName + TableTextColumnsInfo.TableName+'.'+enCsv;
lbExportTextValueFields.Items.Add(DupStr(' ', 6)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> '+TableFileName);
TableSavedRowCount := 0;
if QSelect.RecordCount > 0 then
begin
AssignFile(FileHandler, TableFileName);
Rewrite(FileHandler);
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
for j := 0 to SelectFieldNames.Count - 1 do
begin
if j <> 0 then
Write(FileHandler, ';');
Write(FileHandler, SelectFieldNames[j]);
end;
Writeln(FileHandler);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
while Not QSelect.Eof do
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IsCyrSymb := false;
for j := 0 to SelectFieldNames.Count - 1 do
begin
if CheckStrHaveRusSymb(QSelect.FN(SelectFieldNames[j]).AsString) then
begin
IsCyrSymb := true;
Break; //// BREAK ////
end;
end;
if IsCyrSymb then
begin
for j := 0 to SelectFieldNames.Count - 1 do
begin
if j <> 0 then
Write(FileHandler, ';');
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
if (TableTextColumnsInfo.TableName = tnProperties) and
(SelectFieldNames[j] = fnDefValue) and
(QSelect.FN(fnIDDataType).AsInteger <> dtString) then
Write(FileHandler, '')
else
Write(FileHandler, CorrectStrToCSV(QSelect.FN(SelectFieldNames[j]).AsString));
end;
Writeln(FileHandler);
TableSavedRowCount := TableSavedRowCount + 1;
end;
QSelect.Next;
end;
finally
CloseFile(FileHandler);
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btExportTextFieldsClick', E.Message);
end;
if TableSavedRowCount = 0 then
lbExportTextValueFields.Items.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>')
else
lbExportTextValueFields.Items.Add(DupStr(' ', 3)+ IntToStr(TableSavedRowCount)+ ' <20><><EFBFBD><EFBFBD><EFBFBD>');
lbExportTextValueFields.Items.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
end;
lbExportTextValueFields.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
FreeAndNil(SelectFieldNames);
finally
Screen.Cursor := crDefault;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btExportTextFieldsClick', E.Message);
end;
end;
procedure TF_ConfiguratorUpdateInfo.btCheckCyrillicClick(Sender: TObject);
var
i, j, k: Integer;
TableTextColumnsInfo: TTableTextColumnsInfo;
SelFieldNames: TStringList;
LogStr: String;
TablesTextColumnsInfo: TObjectList;
TablesNames: TStringList;
TableFields: TStringList;
TableFieldNames: TStringList;
FieldTypes: TIntList;
QSelect: TpFIBQuery;
TableWordCount: Integer;
AllWoardCount: Integer;
begin
try
QSelect := TF_Main(GForm).DM.Query_Select;
{
lbSetTextValuesToActualFields.Clear;
lbSetTextValuesToActualFields.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
SelFieldNames := TStringList.Create;
TablesTextColumnsInfo := TObjectList.Create(false);
TablesTextColumnsInfo.Assign(FSprTablesTextColumnsInfo);
TablesTextColumnsInfo.Assign(FTablesTextColumnsInfo, laOr);
for i := 0 to TablesTextColumnsInfo.Count - 1 do
begin
TableTextColumnsInfo := TTableTextColumnsInfo(TablesTextColumnsInfo[i]);
lbSetTextValuesToActualFields.Items.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
SelFieldNames.Clear;
SelFieldNames.AddStrings(TableTextColumnsInfo.TextFields);
if SelFieldNames.Count > 0 then
SelFieldNames.Add(fnGuid);
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, TableTextColumnsInfo.TableName,
'', SelFieldNames, ''), true);
while Not QSelect.Eof do
begin
LogStr := '';
for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
begin
if CheckStrHaveRusSymb(QSelect.FN(TableTextColumnsInfo.TextFields[j]).AsString) then
begin
if LogStr = '' then
LogStr := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> '+QSelect.FN(fnGUID).AsString+' <20><><EFBFBD><EFBFBD>:';
LogStr := LogStr + ' '+TableTextColumnsInfo.TextFields[j] + '('+QSelect.FN(TableTextColumnsInfo.TextFields[j]).AsString+')';
end;
end;
if LogStr <> '' then
lbSetTextValuesToActualFields.Items.Add(LogStr);
QSelect.Next;
end;
lbSetTextValuesToActualFields.Items.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
end;
FreeAndNil(SelFieldNames);
FreeAndNil(TablesTextColumnsInfo);
lbSetTextValuesToActualFields.Items.Add('<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'); }
meSetTextValuesToActualFields.Clear;
meSetTextValuesToActualFields.lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
FieldTypes := TIntList.Create;
FieldTypes.Add(iftChar);
FieldTypes.Add(iftVarChar);
TablesNames := GetTablesFromBase(QSelect);
TableFieldNames := TStringList.Create;
AllWoardCount := 0;
for i := 0 to TablesNames.Count - 1 do
begin
TableFields := GetFieldsFromTable(TablesNames[i], FieldTypes, QSelect);
// <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> GUID <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if (TableFields.IndexOf(fnGuid) <> -1) and (TableFields.Count > 1) then
begin
TableWordCount := 0;
TableFieldNames.Clear;
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 2)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TablesNames[i]);
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 2)+ '{');
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, TablesNames[i],
'', TableFields, ''), true);
while Not QSelect.Eof do
begin
LogStr := '';
for j := 0 to TableFields.Count - 1 do
begin
if CheckStrHaveRusSymb(QSelect.FN(TableFields[j]).AsString) then
begin
if LogStr = '' then
LogStr := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> '+QSelect.FN(fnGUID).AsString+' <20><><EFBFBD><EFBFBD>:';
LogStr := LogStr + ' '+TableFields[j] + '('+QSelect.FN(TableFields[j]).AsString+')';
if TableFieldNames.IndexOf(TableFields[j]) = -1 then
TableFieldNames.Add(TableFields[j]);
TableWordCount := TableWordCount + 1;
end;
end;
if LogStr <> '' then
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 4)+ LogStr);
QSelect.Next;
end;
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 2)+ '} <20><><EFBFBD>. <20><><EFBFBD><EFBFBD>: '+IntToStr(TableWordCount));
if TableFieldNames.Count > 0 then
begin
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 2)+ '<27><><EFBFBD><EFBFBD>');
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 2)+ '{');
for j := 0 to TableFieldNames.Count - 1 do
begin
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 4)+ TableFieldNames[j]);
end;
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 2)+ '}');
end;
AllWoardCount := AllWoardCount + TableWordCount;
end;
end;
meSetTextValuesToActualFields.lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD>: '+IntToStr(AllWoardCount));
FreeAndNil(TableFields);
FreeAndNil(TableFieldNames);
FreeAndNil(TablesNames);
FreeAndNil(FieldTypes);
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btCheckCyrillicClick', E.Message);
end;
end;
procedure TF_ConfiguratorUpdateInfo.SetValuesToLngFldClick(
Sender: TObject);
var
i, j, k: Integer;
TableTextColumnsInfo: TTableTextColumnsInfo;
FieldListToSel: TStringList;
FieldListToUpd: TStringList;
SelectedGUIDs: TStringList;
SelectedFieldValues: TStringList;
FieldValue: String;
CurrFieldUpd: String;
QSelect: TpFIBQuery;
QOperat: TpFIBQuery;
begin
try
FieldListToSel := TStringList.Create;
FieldListToUpd := TStringList.Create;
SelectedGUIDs := TStringList.Create;
SelectedFieldValues := TStringList.Create;
QSelect := TF_Main(GForm).DM.Query_Select;
QOperat := TF_Main(GForm).DM.Query_Operat;
meSetTextValuesToActualFields.Clear;
meSetTextValuesToActualFields.Lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
Screen.Cursor := crHourGlass;
try
for i := 0 to FSprTablesTextColumnsInfo.Count - 1 do
begin
TableTextColumnsInfo := TTableTextColumnsInfo(FSprTablesTextColumnsInfo[i]);
meSetTextValuesToActualFields.Lines.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
FieldListToSel.Clear;
FieldListToUpd.Clear;
//FieldListToSel.Add(fnGuid);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
//begin
// FieldListToSel.Add(TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Text);
// FieldListToUpd.Add(TableTextColumnsInfo.TextFields[j]);
//end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for j := 0 to TableTextColumnsInfo.TextFields.Count - 1 do
begin
CurrFieldUpd := TableTextColumnsInfo.TextFields[j]+'_'+cbSrcLang.Text;
meSetTextValuesToActualFields.Lines.Add(DupStr(' ', 6)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> '+
CurrFieldUpd+' <20> <20><><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TextFields[j]);
FieldListToSel.Clear;
FieldListToSel.Add(fnGuid);
FieldListToSel.Add(TableTextColumnsInfo.TextFields[j]);
FieldListToUpd.Add(CurrFieldUpd);
try
if Not CheckFieldInTable(TableTextColumnsInfo.TableName, CurrFieldUpd, TF_Main(GForm).DM.Query_Select) then
begin
meSetTextValuesToActualFields.Lines.Add(DupStr(' ', 6)+ '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> '+CurrFieldUpd);
TF_Main(GForm).DM.AddFieldToTable(TableTextColumnsInfo.TableName, CurrFieldUpd, ftString, 255);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, TableTextColumnsInfo.TableName,
'', FieldListToSel, ''), true);
SelectedGUIDs.Clear;
SelectedFieldValues.Clear;
while Not QSelect.Eof do
begin
SelectedGUIDs.Add(QSelect.FieldByName(FieldListToSel[0]).AsString);
SelectedFieldValues.Add(QSelect.FieldByName(FieldListToSel[1]).AsString);
QSelect.Next;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
SetSQLToFIBQuery(QOperat, GetSQLByParams(qtUpdate, TableTextColumnsInfo.TableName,
fnGUID+' = :'+fnGUID, nil, CurrFieldUpd), false);
for k := 0 to SelectedGUIDs.Count - 1 do
begin
if (SelectedFieldValues[k] <> '') or Not cbNotWriteEmptyValues.Checked then
begin
QOperat.Close;
QOperat.ParamByName(fnGUID).AsString := SelectedGUIDs[k];
QOperat.ParamByName(CurrFieldUpd).AsString := SelectedFieldValues[k];
QOperat.ExecQuery;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btSetTextValuesToFieldsClick', E.Message);
end;
end;
meSetTextValuesToActualFields.lines.Add(DupStr(' ', 3)+ '<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+TableTextColumnsInfo.TableName);
end;
meSetTextValuesToActualFields.Lines.Add('<27><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
finally
Screen.Cursor := crDefault;
end;
if cbPackBase.Checked then
F_NormBase.Act_PackBase.Execute;
FreeAndNil(SelectedGUIDs);
FreeAndNil(SelectedFieldValues);
FreeAndNil(FieldListToSel);
FreeAndNil(FieldListToUpd);
except
on E: Exception do AddExceptionToLogEx('TF_ConfiguratorUpdateInfo.btSetValuesToLngFldClick', E.Message);
end;
end;
procedure TF_ConfiguratorUpdateInfo.btChoiceComponImagesFolderClick(
Sender: TObject);
var
NewDir: String;
begin
NewDir := TF_Main(GForm).BrowseNewDirName('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '', '');
if NewDir <> '' then
edComponImagesFolder.Text := NewDir;
end;
procedure TF_ConfiguratorUpdateInfo.btComponImgImportClick(
Sender: TObject);
var
CanGrab: Boolean;
fs: TSearchRec;
ImportedCount: Integer;
ImageCount: Integer;
FileCount: Integer;
FileStatus: String;
ArtFld: String;
ArtNo: String;
QSelect: TpFIBQuery;
QSelectSmart: TpFIBQuery;
QSelSrc: TpFIBQuery;
QUpdate: TpFIBQuery;
FileStream: TFileStream;
procedure ShowMsg(const AMsg: String);
begin
MessageInfo(AMsg);
CanGrab := false;
end;
begin
CanGrab := true;
if Not DirectoryExists(edComponImagesFolder.Text) then
ShowMsg('<27><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
if CanGrab then
begin
lbComponImgImportLog.Items.Clear;
ImportedCount := 0;
ImageCount := 0;
FileCount := 0;
ArtFld := '';
if btImgByArtProducer.Checked then
ArtFld := fnArticulProducer
else if btImgByArtDistributor.Checked then
ArtFld := fnArticulDistributor;
QSelect := TF_Main(GForm).DM.Query_Select;
QSelectSmart := nil;
QUpdate := TF_Main(GForm).DM.Query_Operat;
QSelectSmart := TF_Main(GForm).DM.Query;
SetSQLToFIBQuery(QSelectSmart, GetSQLByParams(qtSelect, tnComponent,
'UPPER('+ArtFld+') CONTAINING :'+ArtFld, nil, fnID), false);
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnComponent,
'UPPER('+ArtFld+') = :'+ArtFld, nil, fnID), false);
SetSQLToFIBQuery(QUpdate, GetSQLByParams(qtUpdate, tnComponent,
fnID+' = :'+fnID, nil, fnPicture), false);
if FindFirst(edComponImagesFolder.Text+'*.*', faAnyFile - faDirectory - faVolumeID, fs) = 0 then
repeat
if (fs.Attr and faDirectory = 0) and (fs.Name <> '..') then
begin
FileStatus := '';
FileCount := FileCount + 1;
if ExtractFileExt(AnsiLowerCase(fs.Name)) = '.jpg' then
begin
ImageCount := ImageCount + 1;
ArtNo := ExtractFileNameOnly(fs.Name);
QSelect.Close;
QSelect.Params[0].AsString := AnsiUpperCase(ArtNo);
QSelect.ExecQuery;
QSelSrc := QSelect;
if (QSelect.RecordCount = 0) then
begin
QSelectSmart.Close;
QSelectSmart.Params[0].AsString := AnsiUpperCase(CutBeginZeroDefisInArticle(ArtNo));
QSelectSmart.ExecQuery;
QSelSrc := QSelectSmart;
end;
if QSelSrc.RecordCount > 0 then
begin
FileStream := TFileStream.Create(edComponImagesFolder.Text+'\'+fs.Name, fmOpenRead);
try
QUpdate.Close;
QUpdate.ParamByName(fnID).AsInteger := QSelSrc.Fields[0].AsInteger;
SetParamAsStreamToQuery(QUpdate, fnPicture, FileStream);
QUpdate.ExecQuery;
FileStream.Position := 0;
finally
FileStream.Free;
end;
ImportedCount := ImportedCount + 1;
FileStatus := 'IMPORTED';
end
else
begin
FileStatus := 'COMPON NOT EXISTS';
end;
end
else
begin
FileStatus := 'NO JPG IMAGE';
end;
lbComponImgImportLog.Items.Add(fs.Name+' '+FileStatus);
end;
until FindNext(fs) <> 0;
FindClose(fs);
lbComponImgImportLog.Items.Add('FileCount - '+IntToStr(FileCount));
lbComponImgImportLog.Items.Add('ImageCount - '+IntToStr(ImageCount));
lbComponImgImportLog.Items.Add('ImportedCount - '+IntToStr(ImportedCount));
end;
end;
procedure TF_ConfiguratorUpdateInfo.btSelectGuideFilesDirClick(Sender: TObject);
var
NewDir: String;
begin
NewDir := TF_Main(GForm).BrowseNewDirName('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>...', '', '');
if NewDir <> '' then
edGuideFilesRootDir.Text := NewDir;
end;
procedure TF_ConfiguratorUpdateInfo.btImportGuideFilesClick(
Sender: TObject);
var
GuideFileType: Integer;
IDTopDirType: Integer;
FileCount: Integer;
begin
GuideFileType := GetIDFromComboBoxRz(cbGuideFileType);
// ID <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDTopDirType := TF_Main(GForm).FNormBase.DM.GetTopIDDirType(GetDirItemTypeByGuideFileType(GuideFileType));
if IDTopDirType <> 0 then
begin
FileCount := 0;
ImportGuideFiles(edGuideFilesRootDir.Text, IDTopDirType, GuideFileType, @FileCount);
ShowMessage('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '+IntToStr(FileCount)+' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
end;
end;
procedure TF_ConfiguratorUpdateInfo.btObjIconNameArticulsClick(
Sender: TObject);
var
QSelect: TpFIBQuery;
QUpdate: TpFIBQuery;
IconName: String;
Article: String;
ArtCount: Integer;
function FindArticleInName(const AName: String): String;
var
Len: Integer;
i: integer;
begin
Result := '';
Len := Length(AName);
if Len > 0 then
begin
i := 1;
while i <= Len do
begin
if AName[i] = 'R' then
begin
inc(i);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (i <= Len) and (AName[i] in ['0'..'9']) do
begin
Result := Result + AName[i];
inc(i);
end;
if Result <> '' then
begin
Result := 'R'+Result;
Break; //// BREAK ////
end;
end
else
inc(i);
end;
end;
end;
begin
lbComponImgImportLog.Items.Clear;
ArtCount := 0;
QSelect := TF_Main(GForm).FNormBase.DM.Query_Select;
QUpdate := TF_Main(GForm).FNormBase.DM.Query_Operat;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> 27.08.2010
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnObjectIcons,
fnDateIn+' >= ''27.08.2010''', nil, fnID+','+fnGUID+','+fnName), true);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetSQLToFIBQuery(QUpdate, GetSQLByParams(qtUpdate, tnComponent,
fnArticulProducer+' = :'+fnArticulProducer, nil, fnIDSymbol), false);
while Not QSelect.Eof do
begin
IconName := QSelect.FN(fnName).AsString;
Article := FindArticleInName(IconName);
if Article <> '' then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QUpdate.Close;
QUpdate.ParamByName(fnArticulProducer).AsString := Article;
QUpdate.ParamByName(fnIDSymbol).AsInteger := QSelect.FN(fnID).AsInteger;
QUpdate.ExecQuery;
ArtCount := ArtCount + 1;
lbComponImgImportLog.Items.Add(Article+' '+QSelect.FN(fnGUID).AsString);
end;
QSelect.Next;
end;
lbComponImgImportLog.Items.Add('Article count is '+IntToStr(ArtCount));
lbComponImgImportLog.Items.SaveToFile('c:\articuls.txt');
end;
procedure TF_ConfiguratorUpdateInfo.btGetNBTreeComponsClick(
Sender: TObject);
var
TopNode: TTreeNode;
Articles: TStringList;
Names: TStringList;
CompTypes: TStringList;
NBCompType: TNBComponentType;
DefinedArts: TStringList;
QSelect: TpFIBQuery;
procedure StepNode(ANode: TTreeNode);
var
Dat: PObjectData;
ChildNode: TTreeNode;
begin
Dat := ANode.Data;
if IsComponItemType(Dat.ItemType) then
begin
SetSQLToFIBQuery(QSelect, GetSQLByParams(qtSelect, tnComponent,
fnID+' = '''+IntToStr(Dat.ObjectID)+'''', nil, fnID+','+fnArticulProducer+','+fnName+','+fnIDComponentType), true);
if DefinedArts.IndexOf(QSelect.FN(fnArticulProducer).AsString) = -1 then
begin
//Articles.Add(QSelect.FN(fnArticulProducer).AsString);
Articles.Add(''''+QSelect.FN(fnArticulProducer).AsString+''',');
Names.Add(QSelect.FN(fnName).AsString);
NBCompType := TF_Main(GForm).FNormBase.GSCSBase.NBSpravochnik.GetComponentTypeObjByID(QSelect.FN(fnIDComponentType).AsInteger);
if NBCompType = nil then
CompTypes.Add('')
else
CompTypes.Add(NBCompType.ComponentType.GUID+' '+NBCompType.ComponentType.Name);
end;
end
else
begin
ChildNode := ANode.getFirstChild;
while ChildNode <> nil do
begin
StepNode(ChildNode);
ChildNode := ChildNode.getNextSibling;
end;
end;
end;
begin
Articles := TStringList.Create;
Names := TStringList.Create;
CompTypes := TStringList.Create;
DefinedArts := TStringList.Create;
DefinedArts.LoadFromFile('c:\articuls_skip.txt');
QSelect := TF_Main(GForm).FNormBase.DM.Query_Select;
TopNode := TF_Main(GForm).FNormBase.GetTopNode;
TopNode := TopNode.getNextSibling;
StepNode(TopNode);
meLog.Lines.Clear;
meLog.Lines.Add('Articles ');
meLog.Lines.AddStrings(Articles);
meLog.Lines.Add('');
meLog.Lines.Add('Names ');
meLog.Lines.AddStrings(Names);
meLog.Lines.Add('');
meLog.Lines.Add('CompTypes ');
meLog.Lines.AddStrings(CompTypes);
DefinedArts.Free;
CompTypes.Free;
Articles.Free;
Names.Free;
end;
end.