//Записывает в текущую ячейку значение свойства выделенного параметра, field - имя поля //Транзакция создается из одной ячейки и добавляется в Transactions public void WriteValue(LinkField field, Transaction tlist) { try { if (!GeneralRep.CheckOneSheet(true)) { return; } var v = CurParam.GetField(field); var shape = _book.ActiveShape(); if (shape == null) { Range cell = GeneralRep.Application.ActiveCell; var t = new TransactionCell(cell) { NewValue = v, Value = v }; tlist.AddCell(t); } else if (shape.Type == MsoShapeType.msoTextBox) { var t = new TransactionShape(shape) { NewValue = v, Value = v }; tlist.AddShape(t); } } catch {} }
private void FormFiltersParams_FormClosing(object sender, FormClosingEventArgs e) { if (_book.Forms.ContainsKey(ReporterCommand.FilterParams)) { e.Cancel = true; Hide(); } else { var sys = _book.SysPage; sys.PutControl(FilterOtm); sys.PutControl(RelationOtm); sys.PutControl(FilterFullCode); sys.PutControl(RelationFullCode); sys.PutControl(FilterCode); sys.PutControl(RelationCode); sys.PutControl(FilterSubCode); sys.PutControl(RelationSubCode); sys.PutControl(FilterName); sys.PutControl(RelationName); sys.PutControl(FilterComment); sys.PutControl(RelationComment); sys.PutControl(FilterTask); sys.PutControl(RelationTask); sys.PutControl(FilterUnits); sys.PutControl(RelationUnits); sys.PutControl(FilterDataType); sys.PutControl(RelationDataType); sys.PutControl(FilterSuperProcess); sys.PutControl(RelationSuperProcess); sys.PutControl(FilterCalcParamType); sys.PutControl(RelationCalcParamType); GeneralRep.CloseForm(ReporterCommand.FilterParams); } }
//Загрузка списка шаблонов в таблицу private void FormLinksTemplate_Load(object sender, EventArgs e) { try { _book = GeneralRep.ActiveBook; _book.SysPage.GetTemplatesList(Template); var items = LinkPropsPanel.CellLinkType.Items; items.Clear(); items.Add(LinkType.Combined.ToRussian()); items.Add(LinkType.CombinedList.ToRussian()); items.Add(LinkType.MomentsList.ToRussian()); items.Add(LinkType.Absolute.ToRussian()); items.Add(LinkType.AbsoluteEdit.ToRussian()); items.Add(LinkType.AbsoluteCombined.ToRussian()); items.Add(LinkType.AbsoluteList.ToRussian()); items.Add(LinkType.HandInput.ToRussian()); items.Add(LinkType.Result.ToRussian()); _template = Template.Text = _book.SysPage.GetValue("CurTemplate"); LoadTemplate(); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при загрузке списка шаблонов", ex); } }
private void FormFiltersIntervals_FormClosing(object sender, FormClosingEventArgs e) { if (_book.Forms.ContainsKey(ReporterCommand.FilterIntervals)) { e.Cancel = true; Hide(); } else { var sys = _book.SysPage; sys.PutControl(FilterOtm, "FilterOtmIntrevals"); sys.PutControl(RelationOtm, "RelationOtmIntervals"); sys.PutControl(FilterName, "FilterNameIntervals"); sys.PutControl(RelationName, "RelationNameIntervals"); sys.PutControl(FilterBegin1, "FilterBegin1Intervals"); sys.PutControl(RelationBegin1, "RelationBegin1Intervals"); sys.PutControl(FilterBegin2, "FilterBegin2Intervals"); sys.PutControl(RelationBegin2, "RelationBegin2Intervals"); sys.PutControl(FilterEnd1, "FilterEnd1Intervals"); sys.PutControl(RelationEnd1, "RelationEnd1Intervals"); sys.PutControl(FilterEnd2, "FilterEnd2Intervals"); sys.PutControl(RelationEnd2, "RelationEnd2Intervals"); sys.PutControl(FilterTimeChange1, "FilterTimeChange1Intervals"); sys.PutControl(RelationTimeChange1, "RelationTimeChange1Intervals"); sys.PutControl(FilterTimeChange2, "FilterTimeChange2Intervals"); sys.PutControl(RelationTimeChange2, "RelationTimeChange2Intervals"); GeneralRep.CloseForm(ReporterCommand.FilterIntervals); } }
//Удаляет ячейки в выделенном диапазоне public void DeleteLinks() { try { if (!GeneralRep.CheckOneSheet(true)) { return; } var sh = ActiveShape(); if (sh != null) { BeforeTransaction(); var list = new Transaction(); list.AddShape(new TransactionShape(sh) { NewLink = null }); sh.Title = ""; LastChangeLinks = DateTime.Now; AddTransaction(list); } else { Range range = GeneralRep.Application.ActiveWindow.RangeSelection; bool many = true; try { many = range.Cells.Count > 10000; } catch { } if (MessageReportQuestion((!many ? "" : "Выделенный фрагмент очень большой, отмена удаления будет невозможна. ") + "Удалить все ссылки в выделенном фрагменте?")) { var list = new Transaction(); BeforeTransaction(); if (!many) { foreach (Range cell in range.Cells) { if (cell.Comment != null) { list.AddCell(new TransactionCell(cell) { NewLink = null }); } } } range.ClearComments(); LastChangeLinks = DateTime.Now; ClearReportDataFromMemory(); if (!many) { AddTransaction(list); } } } } catch (Exception ex) { AddError("Ошибка при удалении ссылок", ex); } }
//Обновляет грид параметров по выбранному проекту учитывется состояние кнопки установки фильтра //updateItems - обновлять истночники списков для фильтров public void ApplyProject(bool updateItems) { IsApplyProject = true; try { LoadOtmToParams(); _table.Rows.Clear(); string pr = Project.Text; if (pr.IndexOf(':') >= 0) { pr = pr.Substring(0, pr.IndexOf(':')); } if (!_book.Projects.ContainsKey(pr)) { CurProject = null; } else { CurProject = _book.Projects[pr]; if (_filterForm != null && updateItems) { _filterForm.MakeFiltersLists(); } foreach (var par in CurProject.Params.Values) { if (_filterForm == null || _filterForm.CheckParam(par)) { var r = _table.NewRow(); r["ParamOtm"] = par.Otm; r["ParamTask"] = par.GetField(LinkField.Task); r["ParamCode"] = par.GetField(LinkField.Code); r["ParamName"] = par.GetField(LinkField.Name); r["ParamDataType"] = par.GetField(LinkField.DataType); r["ParamUnits"] = par.GetField(LinkField.Units); r["ParamSuperProcess"] = par.GetField(LinkField.SuperProcessType); r["ParamCalcParamType"] = par.GetField(LinkField.CalcParamType); r["ParamMin"] = par.GetField(LinkField.Min); r["ParamMax"] = par.GetField(LinkField.Max); r["ParamComment"] = par.GetField(LinkField.Comment); _table.Rows.Add(r); } } Params.Update(); if (Params.Rows.Count > 0) { Params.Rows[0].Cells[4].Selected = true; ApplyParam(); } Params.Columns[2].Visible = Params.Columns[3].Visible = !CurProject.IsSystem; } } catch (Exception ex) { GeneralRep.ShowError("Ошибка при обновлении списка параметров", ex); } IsApplyProject = false; }
private void OpenReportGroup() { if (GroupReports.SelectedItems.Count > 0 && !GeneralRep.CommonBook.Forms.ContainsKey(ReporterCommand.GroupReportEdit)) { var item = GroupReports.SelectedItems[0]; var f = (FormGroupReportEdit)GeneralRep.RunReporterCommand(ReporterCommand.GroupReportEdit); f.LoadGroup((int)item.Tag); } }
private void FormGroupReportWin_FormClosed(object sender, FormClosedEventArgs e) { using (var sys = new SysTabl(General.ReporterFile)) { sys.PutSubValue("FormGroupReports", "BeginPeriod", BeginPeriod.Text); sys.PutSubValue("FormGroupReports", "EndPeriod", EndPeriod.Text); } GeneralRep.CloseForm(ReporterCommand.GroupReports); }
private void butLoadInterval_Click(object sender, EventArgs e) { try { if (Intervals.Rows.Count == 0) { return; } if (!GeneralRep.CheckOneSheet(false)) { return; } GeneralRep.Application.Visible = false; _book.IsReportForming = true; var row = Intervals.Rows[Intervals.SelectedCells[0].RowIndex]; var beg = row.Get("PeriodBegin").ToDateTime(); var en = row.Get("PeriodEnd").ToDateTime(); var cname = row.Get("IntervalName"); _book.Interval = new ArchiveInterval(IntervalType.Single, beg, en, cname); using (_book.StartAtom("Заполнение отчета из журнала", true, beg + " - " + en + " " + cname)) { try { _book.AddEvent("Загрузка интервала", beg + " - " + en + " " + cname); using (_book.Start(10, 40)) _book.ReadReportProject(); using (_book.Start(40)) { _book.FormingBook = _book.Workbook; _book.FillReport("Все листы"); } if (_book.Forms.ContainsKey(ReporterCommand.Report)) { var f = (FormReport)_book.Forms[ReporterCommand.Report]; f.PeriodBegin.Text = beg.ToString(); f.PeriodEnd.Text = en.ToString(); f.IntervalName.Text = cname; } } catch (Exception ex) { _book.AddError("Ошибка заполнения отчета", ex); } _book.ShowError(); } Different.MessageInfo("Отчет загружен из журнала.\nОтчет: " + _book.Code + ", " + _book.Name + "\nПериод: " + beg.ToString() + " - " + en.ToString()); } catch (Exception ex) { GeneralRep.ShowError("Ошибка заполнения отчета", ex); } GeneralRep.Application.Visible = true; _book.Workbook.Activate(); _book.IsReportForming = false; }
private void Template_SelectedIndexChanged(object sender, EventArgs e) { try { _book.SysPage.PutValue("CurTemplate", Template.Text); _book.LoadCurTemplate(); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при выборе шаблона", ex); } }
private void TemplateGrid_SelectionChanged(object sender, EventArgs e) { try { SaveParam(); LoadParam(); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при выборе параметра для шаблона", ex); } }
private void butOK_Click(object sender, EventArgs e) { try { if (CodeReport.Text.IsEmpty()) { Different.MessageError("Не указан код отчета"); return; } if (FileReport.Text.IsEmpty() || (new FileInfo(FileReport.Text).Extension != ".xlsx")) { Different.MessageError("Указан недопустимый файл отчета"); return; } using (var rec = new ReaderAdo(General.ReporterFile, "SELECT Report FROM Reports WHERE Report='" + CodeReport.Text + "'")) if (rec.HasRows() && !Different.MessageQuestion("Отчет с кодом " + CodeReport.Text + " уже существует. Заменить на новый?")) { return; } var fnew = new FileInfo(FileReport.Text); if (fnew.Exists && !Different.MessageQuestion("Файл " + FileReport.Text + " уже существует. Заменить на новый?")) { return; } try { new FileInfo(General.ReporterDir + "ReportTemplate.xlsx").CopyTo(FileReport.Text, true); GeneralRep.Application.Workbooks.Open(FileReport.Text); var sys = new SysPage(GeneralRep.Application.ActiveWorkbook); sys.PutValue("Report", CodeReport.Text); sys.PutValue("ReportName", NameReport.Text); sys.PutValue("ReportDescription", DescriptionReport.Text); sys.PutValue("DifferentLength", "True"); sys.PutValue("SaveToArchive", "True"); GeneralRep.Application.ActiveWorkbook.Save(); } catch (Exception ex) { ex.MessageError("Ошибка создания файла, возможно файл уже существует"); } Close(); GeneralRep.ChangeActiveBook(); var f = GeneralRep.RunReporterCommand(ReporterCommand.Setup); ((TabControl)f.Controls["tabMain"]).SelectTab("tabReport"); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при создании отчета", ex); } }
private void ButAdd_Click(object sender, EventArgs e) { using (var rec = new RecDao(General.ReporterFile, "GroupReports")) { rec.AddNew(); rec.Put("GroupCode", "NewGroupReport"); GroupReports.SelectedItems.Clear(); var item = EditItem(rec); item.Selected = true; rec.Update(); var f = (FormGroupReportEdit)GeneralRep.RunReporterCommand(ReporterCommand.GroupReportEdit); f.LoadGroup((int)item.Tag); } }
//Вызываетя при закрытии формы private void CloseSaving() { try { _book.SysPage.PutControl(PeriodBegin); _book.SysPage.PutControl(PeriodEnd); _book.SysPage.PutValue("CalcName", IntervalName.Text); _book.SysPage.PutValue("FillPages", FillPages.Text); _book.SysPage.PutValue("SaveToArchive", SaveToArchive.Checked); _book.CloseForm(ReporterCommand.Report); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при закрытия формы построения отчетов", ex); } }
//Добавляет ссылку типа Сохранение //tlist - список операций текущей транзакции, если не задан то транзакция создается из одной ячейки и добавляется в Transactions public void AddLinkSave(Transaction tlist = null, Range cell = null) { try { if (!GeneralRep.CheckOneSheet(true)) { return; } string res = "Project=Сохранение;Field=" + LinkField.Value.ToEnglish() + ";AllowEdit=True;"; res += "LinkType=" + LinkType.Save.ToEnglish() + ";"; res += "CellComment=" + CellComment.Text + ";"; string scode = GetSaveCode(); res += "Code=" + scode + ";SaveCode=" + scode; AddCellLink(res, tlist, cell); } catch { } }
private void butDelete_Click(object sender, EventArgs e) { if (Different.MessageQuestion("Вы действительно хотите удалить шаблон " + Template.Text + "?", "Удаление")) { try { _book.SysPage.DeleteTemplate(Template.Text); _book.SysPage.GetTemplatesList(Template); _book.CurLinkTemplate.Clear(); _template = Template.Text = null; _cells = null; UpdateTemplateInBook(null); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при удалении шаблона", ex); } } }
private void butFormReport_Click(object sender, EventArgs e) { if (!GeneralRep.CheckOneSheet(false)) { return; } var d = DateTime.Now; var t = new TimeInterval(Different.MinDate.AddYears(1), d.AddMilliseconds(-d.Millisecond)); if (!_book.OnlyAbsolute) { t = _book.CheckPeriodTime(PeriodBegin.Text, PeriodEnd.Text); if (t == null) { return; } } var fill = FillPages.Text; var save = SaveToArchive.Checked; _book.IsReportForming = true; _book.Interval = new ArchiveInterval(IntervalType.Single, t.Begin, t.End, IntervalName.Text); GeneralRep.Application.Visible = false; SetCalcMode(true); if (_book.ThreadId == 0) { FormingReport(fill, save); } else { if (!_book.PrepareController()) { Different.MessageError("Ошибка запуска расчета"); } _task = new Thread(() => FormingReport(fill, save)) { Priority = ThreadPriority.AboveNormal }; _task.Start(); } }
private void FormLiveReport_Load(object sender, EventArgs e) { _book = GeneralRep.ActiveBook; _book.FormingBook = _book.Workbook; var sys = _book.SysPage; using (_book.StartAtom("Открытие формы динамических отчетов")) { try { _book.AddEvent("Настройка внешнего вида"); PeriodLength.Text = sys.GetValue("LiveReportPeriodLength"); SourcesLate.Text = sys.GetValue("LiveReportSourcesLate"); FillPages.Text = sys.GetValue("LiveReportFillPages"); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при открытии формы динамических отчетов", ex); } } }
private void ButFindLinks_Click(object sender, EventArgs e) { try { if (CurParam != null) { var f = (FormFindLinks)GeneralRep.RunReporterCommand(ReporterCommand.FindLinks); f.Project.Text = CurProject.Code; f.Code.Text = CurParam.FullCode; f.FirstName.Text = CurParam.ArchiveParam.FirstParam.Name; if (CurParam.ArchiveParam.LastParam != null) { f.LastName.Text = CurParam.ArchiveParam.LastParam.Name; } f.Find(); } } catch (Exception ex) { GeneralRep.ShowError("Ошибка при поиске ссылок на выбранный параметр", ex); } }
private void FormVideo_Load(object sender, EventArgs e) { _book = GeneralRep.ActiveBook; _book.FormingBook = _book.Workbook; var sys = _book.SysPage; using (_book.StartAtom("Открытие формы видеомагнитофона")) { try { _book.AddEvent("Настройка внешнего вида"); VideoBegin.Text = sys.GetValue("VideoBegin"); VideoEnd.Text = sys.GetValue("VideoEnd"); PeriodLength.Text = sys.GetValue("VideoPeriodLength"); BetweenPeriods.Text = sys.GetValue("VideoBetweenPeriods"); FillPages.Text = sys.GetValue("VideoFillPages"); UpdateSourcesTime(); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при открытии формы видеомагнитофона", ex); } } }
private void butOtmLinks_Click(object sender, EventArgs e) { if (!GeneralRep.CheckOneSheet(true)) { return; } if (_book.ActiveShape() != null) { return; } if (CurProject != null) { var tlist = new Transaction(); _book.BeforeTransaction(); foreach (DataGridViewRow row in Params.Rows) { if (row.GetBool("Otm")) { AddLinksTemplate(CurProject.Params[row.Get("Code")], tlist); } } _book.AddTransaction(tlist); } }
//Открывает новую заданную форму public Form RunCommandReporter(ReporterCommand c) { if (Forms.ContainsKey(c) && Forms[c] != null) { var fm = Forms[c]; if (!fm.Visible) { fm.Show(); } if (fm.WindowState == FormWindowState.Minimized) { fm.WindowState = FormWindowState.Normal; } fm.Focus(); return(fm); } if (!c.OneForAllBooks() && IsReportForming) { return(null); } if (c.NeedCheckReport() && !SysPage.IsInfoTask()) { MessageReportError("Да запуска команды необходимо открыть отчет InfoTask"); return(null); } Form f = null; using (StartAtom(c)) { try { AddEvent("Закрытие лишних форм"); var less = new Dictionary <ReporterCommand, Form>(); var great = new Dictionary <ReporterCommand, Form>(); foreach (var k in Forms) { if (c.Greater(k.Key)) { less.Add(k.Key, k.Value); } if (c.Less(k.Key)) { great.Add(k.Key, k.Value); } } var cForms = GeneralRep.CommonBook.Forms; foreach (var k in cForms) { if (c.Less(k.Key)) { great.Add(k.Key, k.Value); } } if (great.Count > 0) { string smess = ""; foreach (var g in great) { smess += (smess != "" ? "," : "") + " Форма " + g.Key.ToFormName(); } smess = "Команда не может быть выполнена, пока открыты:" + smess + ". Закрыть формы?"; if (!MessageReportQuestion(smess)) { return(null); } } foreach (var k in less) { k.Value.Close(); if (Forms.ContainsKey(k.Key)) { Forms.Remove(k.Key); } if (cForms.ContainsKey(k.Key)) { cForms.Remove(k.Key); } } foreach (var k in great) { GeneralRep.CloseForm(k.Key, true); } if (c == ReporterCommand.PutLinks || c == ReporterCommand.ShapeLibrary || c == ReporterCommand.Report || c == ReporterCommand.LiveReport || c == ReporterCommand.Intervals || c == ReporterCommand.AbsoluteEdit || c == ReporterCommand.LinksList) { UpdateDataFile(false); } System.Windows.Forms.Application.EnableVisualStyles(); switch (c) { case ReporterCommand.GroupReports: f = new FormGroupReports(); break; case ReporterCommand.GroupReportEdit: f = new FormGroupReportEdit(); break; case ReporterCommand.Create: f = new FormCreate(); break; case ReporterCommand.Setup: f = new FormSetup(); break; case ReporterCommand.CopyServerReport: CopyServerReport(); break; case ReporterCommand.PutLinks: using (Start()) LoadCurTemplate(); LastChangeLinks = DateTime.Now; f = new FormPutLinks(); break; case ReporterCommand.FilterParams: f = new FormFiltersParams(); break; case ReporterCommand.LinkProperties: f = new FormLinkProperties(); break; case ReporterCommand.FindLinks: f = new FormFindLinks(); break; case ReporterCommand.LinksTemplate: f = new FormLinksTemplate(); break; case ReporterCommand.DeleteLinks: DeleteLinks(); LastChangeLinks = DateTime.Now; break; case ReporterCommand.ClearCells: Forms.Add(ReporterCommand.ClearCells, null); UsedFileToMemory(); ClearAllCells(); Forms.Remove(ReporterCommand.ClearCells); break; case ReporterCommand.ShapeLibrary: f = new FormShapeLibrary(); break; case ReporterCommand.Report: UsedFileToMemory(); PrepareController(); f = new FormReport(); break; case ReporterCommand.LiveReport: UsedFileToMemory(); PrepareController(); f = new FormLiveReport(); break; case ReporterCommand.Video: UsedFileToMemory(); PrepareController(); f = new FormVideo(); break; case ReporterCommand.ArchivesRanges: f = new FormArchivesRanges(); break; case ReporterCommand.Intervals: UsedFileToMemory(); if (FormInf == null || FormToDir || FormToFile) { MessageReportError("Сохранение в журнал возможно только при формировании отчета непосредственно в бланк отчета (задается в настройках)"); } else { PrepareArchive(); f = new FormIntervals(); } break; case ReporterCommand.FilterIntervals: f = new FormFiltersIntervals(); break; case ReporterCommand.SaveReport: if (CanSaveReport()) { f = new FormSaveReport(); } break; case ReporterCommand.AbsoluteEdit: UsedFileToMemory(); AddEvent("Чтение абсолютных значений из архива"); foreach (var project in UsedProjects.Values) { project.AbsoluteEditValues = project.Archive.ReadAbsoluteEdit(project.Code, false); } f = new FormAbsoluteEdit(); break; case ReporterCommand.Update: UpdateDataFile(true); if (!Command.IsError) { MessageReport("Ссылки были обновлены"); } break; case ReporterCommand.LinksList: f = new FormLinksList(); break; case ReporterCommand.AppInfo: f = new FormAppInfo(); break; } if (f != null) { if (!c.OneForAllBooks()) { f.Text += " (" + Code + ")"; } Forms.Add(c, f); f.Show(); } } catch (Exception ex) { AddError("Ошибка при открытии формы", ex, c.ToString()); } if (Command != null && Command.IsError) { foreach (var ff in Forms) { if (ff.Key != ReporterCommand.LinkProperties && ff.Value != null && ff.Value.Visible) { ff.Value.Activate(); break; } } ShowError(); } } return(f); }
private void FormAppInfo_FormClosing(object sender, FormClosingEventArgs e) { GeneralRep.CloseForm(ReporterCommand.AppInfo); }
private void FormGroupReportEdit_FormClosing(object sender, FormClosingEventArgs e) { GeneralRep.CloseForm(ReporterCommand.GroupReportEdit); }
private void FormAbsoluteEdit_FormClosed(object sender, FormClosedEventArgs e) { GeneralRep.CloseForm(ReporterCommand.AbsoluteEdit); GeneralRep.Application.SheetSelectionChange -= OnSelectionChange; }
private void FormSetupWin_FormClosed(object sender, FormClosedEventArgs e) { GeneralRep.CloseForm(ReporterCommand.Setup); }
private void Projects_CellContentClick(object sender, DataGridViewCellEventArgs e) { try //Нажатие кнопки обзор { if (e.ColumnIndex == 5 && e.RowIndex >= 0) { try { string t = "Файл проекта "; var isNewRow = Projects.Rows[e.RowIndex].IsNewRow; try { if (!isNewRow) { t += Projects.Rows[e.RowIndex].Get("Project"); } } catch { } var d = new DialogCommand(DialogType.OpenFile) { DialogTitle = t, ErrorMessage = "Указан недопустимый файл проекта" }; d.FileTables = new[] { "CalcParams", "CalcSubParams", "GraficsList", "SignalsInUse", "Providers" }; string file = d.Run(Projects.Rows[e.RowIndex].Get("ProjectFile")); if (file.IsEmpty()) { return; } if (isNewRow) { Projects.Rows.Add(); } var cells = Projects.Rows[e.RowIndex].Cells; cells["ProjectFile"].Value = file; cells["Project"] = new DataGridViewTextBoxCell(); using (var syst = new SysTabl(file)) { string s = syst.SubValue("ProjectInfo", "Project"); if (s != null) { cells["Project"].Value = s; } else { cells["Project"].Value = DBNull.Value; } s = syst.SubValue("ProjectInfo", "ProjectName"); if (s != null) { cells["ProjectName"].Value = s; } else { cells["ProjectName"].Value = DBNull.Value; } } UpdateProvidersList(); } catch (Exception ex) { GeneralRep.ShowError("Указан недопустимый файл проекта", ex); } } } catch {} }
private void FormSetupWin_Load(object sender, EventArgs e) { _setupIsLoaded = false; _book = GeneralRep.ActiveBook; _book.AddEvent("Загрузка свойств отчета"); var sys = _book.SysPage; try { //Свойства отчета sys.GetControl(CodeReport, "Report"); sys.GetControl(NameReport, "ReportName"); sys.GetControl(DescriptionReport, "ReportDescription"); FileReport.Text = GeneralRep.Application.ActiveWorkbook.FullName; sys.GetControl(MonthLength); sys.GetControl(DayLength); sys.GetControl(HourLength); sys.GetControl(MinuteLength); sys.GetControl(DayStart); sys.GetControl(HourStart); sys.GetControl(MinuteStart); radioDifferent.Checked = sys.GetBoolValue("DifferentLength"); radioLess.Checked = sys.GetValue("DifferentLength") == "Less"; radioEquals.Checked = sys.GetValue("DifferentLength") == "Equals"; radioNow.Checked = sys.GetValue("DefaultPeriod") == "Now"; radioPrevious.Checked = sys.GetValue("DefaultPeriod") != "Now"; DifferentBegin.Checked = sys.GetBoolValue("DifferentBegin"); CalcName.Text = sys.GetValue("DefaultCalcName"); AllowProjectsRepetitions.Checked = sys.GetBoolValue("AllowProjectsRepetitions"); } catch (Exception ex) { GeneralRep.ShowError("Текущий файл не является файлом отчета InfoTask или был поврежден", ex); Close(); return; } _book.AddEvent("Загрузка настроек из ReporterData"); Providers.Rows.Clear(); try { if (CodeReport.Text != null) { using (var db = new DaoDb(General.ReporterFile)) { int rid = 0; using (var rec = new RecDao(db, "SELECT * FROM Reports WHERE Report = '" + CodeReport.Text + "'")) if (rec.HasRows()) { ThreadId.Text = rec.GetInt("ThreadId").ToString(); UseOneArchive.Checked = rec.GetBool("UseOneArchive"); ServerReport.Text = rec.GetString("ServerReport"); var dic = rec.GetString("FormInf").ToPropertyDicS(); FormToTemplate.Checked = dic["FormTo"] == "Template"; FormToDir.Checked = dic["FormTo"] == "Dir"; FormToFile.Checked = dic["FormTo"] == "File"; ResultDir.Text = dic["ResultDir"]; ResultFileName.Text = dic["ResultFileName"]; ResultFile.Text = dic["ResultFile"]; AddDateToName.Checked = dic.GetBool("AddDateToName"); DateNameFormat.Text = dic["DateNameFormat"]; AddBeginToName.Checked = dic.GetBool("AddBeginToName"); BeginNameFormat.Text = dic["BeginNameFormat"]; AddEndToName.Checked = dic.GetBool("AddEndToName"); EndNameFormat.Text = dic["EndNameFormat"]; AddCalcNameToName.Checked = dic.GetBool("AddCalcNameToName"); AddSheetToName.Checked = dic.GetBool("AddSheetToName"); SetFocusToFormed.Checked = dic.GetBool("SetFocusToFormed"); rid = rec.GetInt("ReportId"); _codes.Add("Report_Archive", rec.GetString("CodeArchive")); _infs.Add("Report_Archive", rec.GetString("InfArchive")); } SetFormingEnabled(); labelThreadId.Visible = ThreadId.Visible; //Список проектов using (var recr = new RecDao(db, "SELECT * FROM Projects WHERE ReportId =" + rid)) foreach (var pr in sys.GetProjects().Values) { int rn = Projects.Rows.Add(); var cells = Projects.Rows[rn].Cells; bool b = recr.FindFirst("Project", pr.Code); if (AllowProjectsRepetitions.Checked) { b = !pr.Code2.IsEmpty() ? recr.FindFirst("ProjectCode2", pr.Code2) : recr.FindFirst("(Project='" + pr.Code + "') AND ((ProjectCode2 = '') OR (ProjectCode2 Is Null))"); } if (b) { recr.GetToDataGrid("ProjectFile", cells); recr.GetToDataGrid("ProjectName", cells); if (AllowProjectsRepetitions.Checked) { recr.GetToDataGrid("ProjectCode2", cells); } cells["Project"] = new DataGridViewTextBoxCell(); if (!UseOneArchive.Checked && pr.CalcMode != CalcModeType.Internal) { var acode = recr.GetString("CodeArchive"); var ainf = recr.GetString("InfArchive"); _codes.Add(pr.CodeFinal + "_Archive", acode); _infs.Add(pr.CodeFinal + "_Archive", ainf); } } cells["Project"].Value = pr.Code; cells["ProjectCalcMode"].Value = pr.CalcMode.ToRussian(); if (AllowProjectsRepetitions.Checked) { cells["ProjectCode2"].Value = pr.Code2; } } } } } catch (Exception ex) { GeneralRep.ShowError("Неправильный файл ReporterData.accdb", ex); Close(); return; } _book.AddEvent("Загрузка настроек из ControllerData"); try { int tid; if (!int.TryParse(ThreadId.Text, out tid)) { tid = 0; } if (tid != 0) { using (var rect = new RecDao(General.ControllerFile, "SELECT * FROM Threads WHERE ThreadId = " + tid)) { IsImit.Checked = rect.GetBool("IsImit"); ImitMode.Text = rect.GetString("ImitMode"); using (var rec = new RecDao(rect.DaoDb, "SELECT * FROM Providers WHERE ThreadId=" + tid)) while (rec.Read()) { string type = rec.GetString("ProviderType"); if (type == "Источник" || type == "Приемник" || (type == "Архив" && !UseOneArchive.Checked) || (type == "Имитатор" && IsImit.Checked)) { string name = rec.GetString("ProviderName"); _codes.Add(name, rec.GetString("ProviderCode")); _infs.Add(name, rec.GetString("ProviderInf")); } } } } } catch (Exception ex) { GeneralRep.ShowError("Неправильный файл ControllerData.accdb", ex); } _setupIsLoaded = true; UpdateProvidersList(); }
private void butOK_Click(object sender, EventArgs e) { using (_book.StartAtom("Сохранение настроек")) { _book.AddEvent("Сохранение настроек отчета"); if (CodeReport.Text.IsEmpty()) { Different.MessageError("Код отчета должен быть заполнен"); return; } int res; bool er = (!MonthLength.Text.IsEmpty() && (!int.TryParse(MonthLength.Text, out res) || res < 0)); er |= (!DayLength.Text.IsEmpty() && (!int.TryParse(DayLength.Text, out res) || res < 0)); er |= (!HourLength.Text.IsEmpty() && (!int.TryParse(HourLength.Text, out res) || res < 0)); er |= (!MinuteLength.Text.IsEmpty() && (!int.TryParse(MinuteLength.Text, out res) || res < 0)); er |= (!DayStart.Text.IsEmpty() && (!int.TryParse(DayStart.Text, out res) || res < 0)); er |= (!HourStart.Text.IsEmpty() && (!int.TryParse(HourStart.Text, out res) || res < 0)); er |= (!MinuteLength.Text.IsEmpty() && (!int.TryParse(MinuteLength.Text, out res) || res < 0)); if (er) { Different.MessageError("Указана недопустимая длительность или начало интеравала"); return; } var sys = _book.SysPage; bool isInternal = false; try { sys.PutValue("Report", CodeReport.Text); sys.PutValue("ReportName", NameReport.Text); sys.PutValue("ReportDescription", DescriptionReport.Text); sys.PutControl(MonthLength); sys.PutControl(DayLength); sys.PutControl(HourLength); sys.PutControl(MinuteLength); sys.PutControl(DayStart); sys.PutControl(HourStart); sys.PutControl(MinuteStart); sys.PutValue("DifferentLength", radioDifferent.Checked ? "True" : (radioLess.Checked ? "Less" : "Equals")); if (radioNow.Checked) { sys.PutValue("DefaultPeriod", "Now"); } if (radioPrevious.Checked) { sys.PutValue("DefaultPeriod", "Previous"); } sys.PutValue("DifferentBegin", DifferentBegin.Checked); sys.PutValue("DefaultCalcName", CalcName.Text); sys.PutValue("AllowProjectsRepetitions", AllowProjectsRepetitions.Checked); var list = new List <ReportProjectSetup>(); foreach (DataGridViewRow r in Projects.Rows) { if (!r.IsNewRow) { try { var cmode = r.Get("ProjectCalcMode").ToCalcModeType(); isInternal |= cmode == CalcModeType.Internal; list.Add(new ReportProjectSetup(r.Get("Project"), AllowProjectsRepetitions.Checked ? r.Get("ProjectCode2") : null, cmode)); } catch { } } } sys.PutProjects(list); } catch (Exception ex) { GeneralRep.ShowError("Текущий файл не является файлом отчета InfoTask или был поврежден", ex); } try { tabMain.Select(); } catch {} _codes.Clear(); _infs.Clear(); foreach (DataGridViewRow row in Providers.Rows) { string name = row.Get("ProviderName"); _codes.Add(name, row.Get("ProviderCode")); _infs.Add(name, row.Get("ProviderInf")); } int tid; if (!int.TryParse(ThreadId.Text, out tid)) { tid = 0; } if (isInternal) { try { _book.AddEvent("Сохранение настроек в ControllerData"); using (var db = new DaoDb(General.ControllerFile)) { using (var rec = new RecDao(db, "SELECT * FROM Threads WHERE ThreadId=" + tid)) { if (!rec.HasRows()) { rec.AddNew(); } rec.Put("ApplicationType", "Excel"); rec.Put("IsImit", IsImit.Checked); rec.Put("ImitMode", ImitMode.Text); tid = rec.GetInt("ThreadId"); } db.Execute("DELETE * FROM Providers WHERE ThreadId=" + tid); db.Execute("DELETE * FROM Projects WHERE ThreadId=" + tid); using (var rec = new RecDao(db, "Projects")) using (var recc = new RecDao(db, "Providers")) { foreach (DataGridViewRow row in Projects.Rows) { if (!row.IsNewRow && row.Get("ProjectCalcMode").ToCalcModeType() == CalcModeType.Internal) { rec.AddNew(); rec.Put("ThreadId", tid); rec.PutFromDataGrid("Project", row); rec.PutFromDataGrid("ProjectFile", row); } } foreach (DataGridViewRow row in Providers.Rows) { if (row.Get("TypeProvider") != "Архив" || row.Get("ProviderName") == "CalcArchive" || (row.Get("ProviderName") == "Report_Archive" && UseOneArchive.Checked)) { recc.AddNew(); recc.Put("ThreadId", tid); recc.PutFromDataGrid("ProviderType", row, "TypeProvider"); recc.PutFromDataGrid("ProviderCode", row); if (row.Get("ProviderName") != "Report_Archive") { recc.PutFromDataGrid("ProviderName", row); } else { recc.Put("ProviderName", "CalcArchive"); } recc.PutFromDataGrid("ProviderInf", row); recc.Update(); } } } } } catch (Exception ex) { GeneralRep.ShowError("Неправильный файл ControllerData.accdb", ex); return; } } _book.AddEvent("Сохранение настроек в ReporterData"); try //Настройки отчета в ReporterData { using (var db = new DaoDb(General.ReporterFile)) { using (var rec = new RecDao(db, "SELECT * FROM Reports WHERE Report = '" + CodeReport.Text + "'")) { if (!rec.HasRows()) { rec.AddNew(); } rec.Put("Report", CodeReport.Text); rec.Put("ReportName", NameReport.Text); rec.Put("ReportDescription", DescriptionReport.Text); rec.Put("ReportFile", GeneralRep.Application.ActiveWorkbook.FullName); rec.Put("ThreadId", isInternal ? tid : 0); rec.Put("UseOneArchive", UseOneArchive.Checked); rec.Put("CodeArchive", _codes["Report_Archive"]); rec.Put("InfArchive", _infs["Report_Archive"]); string s = "FormTo=" + (FormToTemplate.Checked ? "Template" : (FormToDir.Checked ? "Dir" : "File")) + ";"; s += "ResultDir=" + ResultDir.Text + ";"; s += "ResultFileName=" + ResultFileName.Text + ";"; s += "ResultFile=" + ResultFile.Text + ";"; s += "AddDateToName=" + (AddDateToName.Checked ? "True" : "False") + ";"; var df = DateNameFormat.Text; if (AddDateToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*"))) { Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]"); return; } s += "DateNameFormat=" + df + ";"; s += "AddBeginToName=" + (AddBeginToName.Checked ? "True" : "False") + ";"; df = BeginNameFormat.Text; if (AddBeginToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*"))) { Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]"); return; } s += "BeginNameFormat=" + df + ";"; s += "AddEndToName=" + (AddEndToName.Checked ? "True" : "False") + ";"; df = EndNameFormat.Text; if (AddEndToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*"))) { Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]"); return; } s += "EndNameFormat=" + df + ";"; s += "AddCalcNameToName=" + (AddCalcNameToName.Checked ? "True" : "False") + ";"; s += "AddSheetToName=" + (AddSheetToName.Checked ? "True" : "False") + ";"; s += "SetFocusToFormed=" + (SetFocusToFormed.Checked ? "True" : "False") + ";"; rec.Put("FormInf", s); rec.Put("ServerReport", ServerReport.Text); if (!ServerReport.Text.IsEmpty()) { var file = new FileInfo(ServerReport.Text); if (!file.Exists || file.Extension != ".xlsx") { Different.MessageError("Указанный файл контрольного экземпляра не существует или не является файлом Excel, " + ServerReport.Text); } else if (ServerReport.Text == _book.Workbook.FullName) { Different.MessageError("Файл контрольного бланка расчета не должен совпадать с файлом бланка отчета, " + ServerReport.Text); } } int rid = rec.GetInt("ReportId"); rec.Update(); db.Execute("DELETE * FROM Projects WHERE ReportId=" + rid); using (var recp = new RecDao(db, "Projects")) foreach (DataGridViewRow r in Projects.Rows) { if (!r.IsNewRow) { recp.AddNew(); recp.Put("ReportId", rid); recp.PutFromDataGrid("Project", r); if (AllowProjectsRepetitions.Checked) { recp.PutFromDataGrid("ProjectCode2", r); } recp.PutFromDataGrid("ProjectName", r); recp.PutFromDataGrid("ProjectFile", r); if (UseOneArchive.Checked) { recp.Put("CodeArchive", _codes["Report_Archive"]); recp.Put("InfArchive", _infs["Report_Archive"]); } else if (r.Get("ProjectCalcMode").ToCalcModeType() == CalcModeType.Internal) { recp.Put("CodeArchive", _codes["CalcArchive"]); recp.Put("InfArchive", _infs["CalcArchive"]); } else { var proj = r.Get("Project"); if (AllowProjectsRepetitions.Checked && !r.Get("ProjectCode2").IsEmpty()) { proj = r.Get("ProjectCode2"); } proj += "_Archive"; recp.Put("CodeArchive", _codes[proj]); recp.Put("InfArchive", _infs[proj]); } } } } } } catch (Exception ex) { GeneralRep.ShowError("Неправильный файл ReporterData.accdb", ex); } _book.ClearReportDataFromMemory(); CheckProviders(); Close(); } }
private void ButOk_Click(object sender, EventArgs e) { _book.Interval.Name = IntervalName.Text; _book.SaveReport(); GeneralRep.CloseForm(ReporterCommand.SaveReport, true); }