//Загрузка списка шаблонов в таблицу 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); } }
//Обновляет грид параметров по выбранному проекту учитывется состояние кнопки установки фильтра //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 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 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); } }
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 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 FormPutLinks_Load(object sender, EventArgs e) { try { _book = GeneralRep.ActiveBook; _table = dataSet1.Tables[0]; new ToolTip().SetToolTip(ButDeleteLinks, "Удалить все ссылки из выделенной области листа"); new ToolTip().SetToolTip(ButUndo, "Отменить последнюю установку ссылок"); new ToolTip().SetToolTip(ButRedo, "Вернуть отмененную установку ссылок"); new ToolTip().SetToolTip(ButUpdate, "Обновить список параметров"); new ToolTip().SetToolTip(ButFilter, "Поиск и фильтрация списка параметров"); new ToolTip().SetToolTip(Template, "Текущий шаблон для установки ссылок"); new ToolTip().SetToolTip(ButSave, "Сохранить установленные ссылки и отчет"); new ToolTip().SetToolTip(ButLinkSave, "Добавить ссылку на ячейку для сохранения в журнал отчетов"); new ToolTip().SetToolTip(ButFindLinks, "Список всех ячеек со ссылками на выбранный параметр"); new ToolTip().SetToolTip(ButOtmLinks, "Установить ссылки на отмеченные параметры в соответствии с текущим шаблоном"); new ToolTip().SetToolTip(ButOtmTrue, "Отметить все"); new ToolTip().SetToolTip(ButOtmFalse, "Снять все отметки"); _book.SysPage.GetTemplatesList(Template); _book.CurTransactionNum = _book.CurTransactionNum;//Обновить доступность кнопок //Выпадающий список проектов Project.Items.Clear(); foreach (var p in _book.Projects.Values) { if (p.IsSystem) { Project.Items.Add(p.Code); } else if (!p.IsSave) { Project.Items.Add(p.CodeFinal + ": " + p.Name); } } if (Project.Items.Count > 1 && (string)Project.Items[0] == "Системные") { Project.Text = (string)Project.Items[1]; } else { Project.Text = (string)Project.Items[0]; } var menu = new ContextMenuStrip(); menu.Items.Add(LinkField.Code.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddCode; menu.Items.Add(LinkField.CodeParam.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddCodeParam; menu.Items.Add(LinkField.CodeSubParam.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddCodeSubParam; menu.Items.Add(LinkField.Name.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddName; menu.Items.Add(LinkField.SubName.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddSubName; menu.Items.Add(LinkField.Units.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddUnits; menu.Items.Add(LinkField.Task.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddTask; menu.Items.Add(LinkField.Comment.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddComment; menu.Items.Add(LinkField.SuperProcessType.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddSuperProcess; menu.Items.Add(LinkField.DataType.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddDataType; menu.Items.Add(LinkField.Min.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddMin; menu.Items.Add(LinkField.Max.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddMax; menu.Items.Add(new ToolStripSeparator()); menu.Items.Add("Ссылки по шаблону"); menu.Items[menu.Items.Count - 1].Click += AddTemplateLinks; menu.Items.Add(LinkField.Value.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddValueLink; menu.Items.Add(LinkField.Time.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddTimeLink; menu.Items.Add(LinkField.Nd.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddNdLink; menu.Items.Add(LinkField.Number.ToRussian()); menu.Items[menu.Items.Count - 1].Click += AddNumberLink; Params.ContextMenuStrip = menu; } catch (Exception ex) { GeneralRep.ShowError("Ошибка загрузки формы установки ссылок", ex); } try { Template.Text = _book.SysPage.GetValue("CurTemplate"); CellComment.Text = _book.SysPage.GetValue("CurCellComment"); NextCellShift.Text = _book.SysPage.GetValue("CurNextCellShift"); NextCellStep.Text = _book.SysPage.GetValue("CurNextCellStep"); NextCellStep.Enabled = NextCellShift.Text != "Нет"; } catch { } GeneralRep.Application.CommandBars.OnUpdate += OnShapeChange; GeneralRep.Application.SheetSelectionChange += OnSelectionChange; }
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(); } }
//Добавляет ссылки по шаблону, rp - параметр по которому устанавливать ссылки, tlist - текущая транзакция public void AddLinksTemplate(ReportParam rp = null, Transaction tlist = null) { var trans = tlist ?? new Transaction(); try { if (!GeneralRep.CheckOneSheet(true)) { return; } var param = rp ?? CurParam; if (CurProject == null || param == null) { return; } if (tlist == null) { _book.BeforeTransaction(); } var page = (Worksheet)_book.Workbook.ActiveSheet; var acell = GeneralRep.Application.ActiveCell; foreach (var dic in _book.CurLinkTemplate) { var action = dic["CellAction"].ToCellAction(); string code = dic["CodeForming"];//Способ формирования кода или текст для записи, если action=Записать текст if (action != CellActionType.Text) { code = code.Replace("<Код параметра>", param.ArchiveParam.FirstParam.Code).Replace("<Полный код>", param.FullCode); int n1 = param.FullCode.IndexOf("."); if (n1 > 0) { int n2 = param.FullCode.IndexOf(".", n1 + 1); if (n2 > 0) { code = code.Replace("<Код 2 параметра>", param.FullCode.Substring(0, n2)); } } } int x = acell.Column, y = acell.Row; x += dic.GetInt("X"); y += dic.GetInt("Y"); var field = dic["Field"].ToLinkField(); var cell = (Range)page.Cells[y, x]; var dicl = dic.Keys.Where(prop => prop != "X" && prop != "Y" && prop != "CellAction" && prop != "CodeForming").ToDictionary(prop => prop, prop => dic[prop]); if (action == CellActionType.Save) { AddLinkSave(trans, cell); } if (action == CellActionType.Text) { trans.AddCell(new TransactionCell(page, x, y) { NewValue = code }); page.PutCellValue(y, x, code); } else if (!CurProject.Params.ContainsKey(code)) { trans.NotFound.Add(code); } else { var par = CurProject.Params[code]; if (action == CellActionType.Value) { string s = par.GetField(field); if (s != null) { trans.AddCell(new TransactionCell(page, x, y) { NewValue = s }); page.PutCellValue(y, x, s); } } else { dicl.Add("Project", CurProject.CodeFinal); dicl.Add("Code", par.FullCode); dicl.Add("CellComment", CellComment.Text ?? ""); dicl.Add("SaveCode", GetSaveCode()); if (field == LinkField.CodeSubParam || field == LinkField.SubName || field == LinkField.SubComment) { if (par.ArchiveParam.LastParam != null) { AddCellLink(dicl.ToPropertyString(), trans, cell); } } else if (field == LinkField.Min || field == LinkField.Max) { if (par.ArchiveParam.DataType == BaseLibrary.DataType.Real || par.ArchiveParam.DataType == BaseLibrary.DataType.Integer) { AddCellLink(dicl.ToPropertyString(), trans, cell); } } else if (!field.IsValueField() || CanAddLinkType(par, dicl["LinkType"].ToLinkType())) { AddCellLink(dicl.ToPropertyString(), trans, cell); } else { trans.NotFound.Add(code); } } } } ((Range)page.Cells[acell.Row + _book.CurTemplateShiftY, acell.Column + _book.CurTemplateShiftX]).Activate(); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при установке ссылки по шаблону", ex); } if (tlist == null) { _book.AddTransaction(trans); } }
private void FormReportWin_Load(object sender, EventArgs e) { _book = GeneralRep.ActiveBook; var sys = _book.SysPage; using (_book.StartAtom("Открытие формы построения отчета")) { try { _book.AddEvent("Настройка внешнего вида"); panelPeriod.Visible = !_book.OnlyAbsolute; butSaveHandInput.Visible = _book.HandInputProjects.Count > 0; //Загрузка данных с SysPage IntervalName.Text = sys.GetValue("DefaultCalcName"); if (IntervalName.Text.IsEmpty()) { IntervalName.Text = sys.GetValue("CalcName"); } FillPages.Text = sys.GetValue("FillPages"); SaveToArchive.Checked = sys.GetBoolValue("SaveToArchive"); PeriodEnd.Enabled = PeriodEndPicker.Enabled = _book.DifferentLength != DifferentLength.Equals; string s = ""; int d = sys.GetIntValue("DayLength"); if (d != 0) { s += d + " сут "; } d = sys.GetIntValue("HourLength"); if (d != 0) { s += d + " час "; } d = sys.GetIntValue("MinuteLength"); if (d != 0) { s += d + " мин "; } PeriodLength.Text = s; butPreviousInterval.Enabled = butNextInterval.Enabled = s != ""; switch (_book.DefaultPeriod) { case "Previous": _book.SysPage.GetControl(PeriodBegin); _book.SysPage.GetControl(PeriodEnd); PeriodBegin.ChangePickerValue(PeriodBeginPicker); PeriodEnd.ChangePickerValue(PeriodEndPicker); break; case "Now": SetNowPeriod(); break; } UpdateSourcesTime(); } catch (Exception ex) { GeneralRep.ShowError("Ошибка при открытии формы построения отчетов", ex); } } }