//Копирует одну строчку из SysTabl ConfigTemplate вместе с подтаблицей private static void CopyConfigProp(string propName, RecDao cfgTemplate, RecDao cfg) { cfgTemplate.FindFirst("ParamName", propName); var id = CopyProp(cfgTemplate, cfg); CopySubProp(cfgTemplate.GetInt("ParamId"), cfgTemplate.DaoDb, id, cfg.DaoDb); }
private static int CopyProp(RecDao cfgTemplate, RecDao cfg) { bool flag = !cfg.FindFirst("ParamName", cfgTemplate.GetString("ParamName")); //if (!cfg.FindFirst("ParamName", cfgTemplate.GetString("ParamName"))) if (flag) { // MessageBox.Show("Я не нашел запись в конфиге, о чем сейчас и сообщаю"); //else MessageBox.Show("Я нашел запись в тимплейте. А вы чем занимаетесь?"); cfg.AddNew(); } cfg.Put("ParamName", cfgTemplate.GetString("ParamName")); cfg.Put("ParamType", cfgTemplate.GetString("ParamType")); cfg.Put("ParamValue", cfgTemplate.GetString("ParamValue")); cfg.Put("ParamDescription", cfgTemplate.GetString("ParamDescription")); cfg.Put("ParamTag", cfgTemplate.GetString("ParamTag")); int id = cfg.GetInt("ParamId"); //MessageBox.Show(flag + " " + cfgTemplate.GetString("ParamName")); try { cfg.Update(); } catch (Exception exception) { MessageBox.Show(exception.Message); } return(id); }
private void UpdateParams(DaoDb db) { AddEvent("Обновление таблиц CalcParams и Projects по ячейкам отчета"); using (var rpr = new RecDao(db, "Projects")) while (rpr.Read()) { string pr = rpr.GetString("ProjectCode2"); if (pr.IsEmpty()) { pr = rpr.GetString("Project"); } Projects[pr].PropsToRecordset(rpr); } using (var rp = new RecDao(db, "CalcParams")) if (rp.HasRows()) { rp.MoveFirst(); while (!rp.EOF) { var proj = Projects[rp.GetString("Project")]; var code = rp.GetString("Code"); var param = proj.Params[code]; param.PropsToRecordset(rp); rp.MoveNext(); } } }
//Запись мгновенного значения в ячейку private void WriteValue(Moment mom, RecDao rec, string field) { if (mom == null) { return; } switch (mom.DataType) { case DataType.Real: rec.Put(field, mom.Real); break; case DataType.Integer: case DataType.Boolean: rec.Put(field, mom.Integer); break; case DataType.String: rec.Put(field, mom.String); break; case DataType.Time: rec.Put(field, mom.Date); break; } }
//Запись в таблицы Params и SubParams, columns - список колонок таблицы Params public void ToParamsTables(RecDao recParams, RecDao recSub, IEnumerable <VedColumn> columns) { recParams.AddNew(); foreach (var col in columns) { if (col.SourceType == ColumnSourceType.ResultValue && SubParams.ContainsKey(col.Code)) { var m = SubParams[col.Code].LastMoment; if (m.DataType != DataType.Value) { WriteValue(m, recParams, col.Code); } } else if (col.SourceType == ColumnSourceType.ParamChar || col.SourceType == ColumnSourceType.SignalChar) { WriteProp(col, recParams); } } _id = recParams.GetInt("IdParam"); recParams.Update(); foreach (var sub in SubParams.Keys) { recSub.AddNew(); recSub.Put("IdParam", _id); recSub.Put("CodeSubParam", sub); } }
public static ActionResult ConfigFillK(Session session) { session.Log("Begin ConfigFillK"); try { using (var cfgTemplate = new RecDao(session.GetTargetPath("INSTALLLOCATION") + "General\\ConfigTemplate.accdb", "SELECT * FROM SysTabl")) using (var cfg = new RecDao(session.GetTargetPath("INSTALLLOCATION") + "General\\Config.accdb", "SELECT * FROM SysTabl")) if (session.Features["KosmotronikaFeature"].RequestState == InstallState.Local) { CopyConfigProp("KosmotronikaSQLComm", cfgTemplate, cfg); CopyConfigProp("KosmotronikaDbfComm", cfgTemplate, cfg); CopyConfigProp("KosmotronikaRetroSource", cfgTemplate, cfg); CopyConfigProp("KosmotronikaArchDbSource", cfgTemplate, cfg); CopyConfigProp("KosmotronikaOPCReceiver", cfgTemplate, cfg); } //else if (session.Features["KosmotronikaFeature"].RequestState == InstallState.Removed) //{ // DaoDb.Execute(session.GetTargetPath("INSTALLLOCATION") + "General\\Config.accdb", // "DELETE * FROM SysTabl WHERE ParamName='KosmotronikaSQLComm' OR ParamName='KosmotronikaDbfComm' OR ParamName='KosmotronikaRetroSource' OR ParamName='KosmotronikaOPCReceiver'"); //} } catch (Exception exception) { exception.MessageError(); } session.Log("End ConfigFillK"); return(ActionResult.Success); }
//Запись списка колонок и формирование колонок таблиц Params и VedLin private void MakeColumnsAndFilters() { AddEvent("Формирование колонок ведомости"); using (var rec = new RecDao(_vedDb, "VedColumns")) foreach (var column in _columns) { column.ToRecordset(rec); } _vedDb.Execute("INSERT INTO VedColumnsFormatConditions SELECT VedColumnsFormatConditions.* FROM [" + _project.File + "].VedColumnsFormatConditions " + "INNER JOIN [" + _project.File + "].VedColumns ON VedColumnsFormatConditions.ParentId = VedColumns.ColumnId " + "WHERE VedColumns.Task='" + _task + "' ORDER BY ColumnNum"); _vedDb.Execute("INSERT INTO VedFilters ( Otm, FilterId, FilterNum, FilterType, FilterName, FilterValue, FilterDescription, FilterDefault ) " + "SELECT VedFilters.Otm, VedFilters.FilterId, VedFilters.FilterNum, VedFilters.FilterType, VedFilters.FilterName, VedFilters.FilterValue, VedFilters.FilterDescription, VedFilters.FilterDefault " + "FROM [" + _project.File + "].VedFilters" + (_allTasks ? "" : " WHERE VedFilters.Task='" + _task + "';")); _vedDb.Execute("INSERT INTO VedFiltersObjects SELECT VedFiltersObjects.* " + "FROM [" + _project.File + "].VedFilters INNER JOIN [" + _project.File + "].VedFiltersObjects ON VedFilters.FilterId = VedFiltersObjects.ParentId" + (_allTasks ? "" : " WHERE VedFilters.Task='" + _task + "';")); foreach (var col in _columnsVed.Values) { _vedDb.SetColumn("VedLin", col.Code, col.DataType); } foreach (var col in _columnsParams.Values) { _vedDb.SetColumn("Params", col.Code, col.DataType); //if (col.LinVedView != VedView.None) // _vedDb.SetColumn("VedLin", col.Code, col.DataType); } }
//Подготовка сигналов public void Prepare() { try { if (CloneFile.IsEmpty()) { return; } Logger.AddEvent("Установка отметок для считываемых сигналов"); _signalsId.Clear(); _signalsStrId.Clear(); using (var rec = new RecDao(CloneFile, "SELECT SignalId, FullCode, Otm FROM Signals")) while (rec.Read()) { string code = rec.GetString("FullCode"); if (!ProviderSignals.ContainsKey(code)) { rec.Put("Otm", false); } else { rec.Put("Otm", true); (ProviderSignals[code].DataType.LessOrEquals(DataType.Real) ? _signalsId : _signalsStrId) .Add(rec.GetInt("SignalId"), ProviderSignals[code]); } } } catch (Exception ex) { Logger.AddError("Ошибка при подготовке сигналов", ex); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { using (var rec = new RecDao(Different.GetInfoTaskDir() + @"General\Config.accdb", "SELECT SysSubTabl.SubParamRowSource FROM SysTabl INNER JOIN SysSubTabl ON SysTabl.ParamId = SysSubTabl.ParamId " + "WHERE ((SysTabl.ParamValue='Приемник') AND (SysSubTabl.SubParamName='OPCServerName'));")) while (rec.Read()) { var set = rec.GetString("SubParamRowSource").ToPropertyHashSet(); foreach (var s in set.Values) { if (!OpcServerName.Items.Contains(s)) { OpcServerName.Items.Add(s); } } } OpcServerName.Items.Add("Matrikon.OPC.Simulation.1"); using (var sys = new SysTabl(Different.GetInfoTaskDir() + @"Controller\ControllerData.accdb")) { OpcServerName.Text = sys.SubValue("DebugWriteOPC", "OpcServerName"); Node.Text = sys.SubValue("DebugWriteOPC", "Node"); OpcTag.Text = sys.SubValue("DebugWriteOPC", "OpcTag"); DataType.Text = sys.SubValue("DebugWriteOPC", "DataType"); TagValue.Text = sys.SubValue("DebugWriteOPC", "TagValue"); } }
private bool SaveSateOld(Dictionary <string, string> state) { if (_daoDb != null) { _daoDb.Execute("DELETE * FROM " + TableName); const string stringSql = "SELECT " + FieldPropName + ", " + FieldPropValue + " FROM " + TableName + ";"; using (var rs = new RecDao(_daoDb, stringSql)) { foreach (var key in state.Keys) { if (key != null) { rs.AddNew(); rs.Put(FieldPropName, key); rs.Put(FieldPropValue, state[key]); } } } return(true); } return(false); }
public GenSubParam(RecDao rec, ParsingCondition parsingCondition, ParsingGenerator parsingGenerator) : base(rec, parsingCondition, parsingGenerator) { MakeCondition(rec); OwnerId = rec.GetInt("OwnerId"); rec.Put("ErrMess", ErrMess); }
//Запись мгновенного значения в DebugValues private static void MomToRec(Moment mv, RecDao recv, int id) { if (mv == null) { return; } recv.AddNew(); recv.Put("DebugParamId", id); if (mv.DataType == DataType.Time) { recv.Put("StrValue", mv.Date.ToStringWithMs()); } else { if (mv.DataType == DataType.String) { recv.Put("StrValue", mv.String); } else { recv.Put("Value", mv.Real); } } recv.Put("Time", mv.Time); recv.Put("Nd", mv.Nd); if (mv.Error != null) { recv.Put("ErrMess", mv.Error.ToString(), true); } recv.Update(); }
private void butOK_Click(object sender, EventArgs e) { if (GroupCode.Text.IsEmpty()) { Different.MessageError("Не заполнено имя группы"); return; } ChangeReportsRow(); using (var db = new DaoDb(General.ReporterFile)) { //Сохранение в ReporterData using (var rec = new RecDao(db, "SELECT * FROM GroupReports WHERE GroupId=" + _groupId)) { rec.Put("GroupCode", GroupCode.Text); rec.Put("GroupName", GroupName.Text); ((FormGroupReports)GeneralRep.CommonBook.Forms[ReporterCommand.GroupReports]).EditItem(rec, _groupId); } db.Execute("DELETE * FROM ReportsForGroup WHERE GroupId=" + _groupId); using (var rec = new RecDao(db, "ReportsForGroup")) foreach (DataGridViewRow row in Reports.Rows) { if (!row.IsNewRow) { rec.AddNew(); rec.Put("GroupId", _groupId); rec.PutFromDataGrid("Report", row); rec.PutFromDataGrid("ReportName", row); rec.PutFromDataGrid("ReportFile", row); rec.PutFromDataGrid("ReportTag", row); } } } Close(); }
//Генерация по всему условию public void GenerateParams(TablsList tabls, //список всех таблиц для генерации RecDao rec, //рекордсет параметров RecDao recs) //рекордсет подпараметров { _paramsRec = rec; SubParamsRec = recs; _condition.Generate(this, tabls); }
public ResultSaver(string projectProvider, ThreadCalc thread) { _projectProvider = projectProvider; _db = new DaoDb(thread.ResultFile); _rec = new RecDao(_db, "DebugParams"); _recv = new RecDao(_db, "DebugParamsValues"); _thread = thread; }
//Генерация по всему условию public void GenerateParams(SubRows row, //строка таблицы, по которой генерируется RecDao recs, //рекордсет подпараметров int projectOwnerId) //Id владельца в проекте { SubParamsRec = recs; _projectOwnerId = projectOwnerId; _condition.Generate(this, row); }
//Загрузить проект projectFile, compileDir - каталог для компиляции public string LoadProject(string projectFile) { StartAtom(Atom.LoadProject, true, projectFile); CountsToZero(); if (State == State.Closed) { AddError("Копилятор уже был закрыт"); } else { try { if (!DaoDb.Check(projectFile, new[] { "CalcParams", "CalcSubParams", "CalcParamsArchive", "Objects", "Signals", "SignalsInUse", "GraficsList", "GraficsValues" })) { AddError("Указан неправильный файл проекта", null, projectFile); } else { using (var db = new DaoDb(projectFile)) { using (var rec = new RecDao(db, "SELECT * FROM Providers WHERE (ProviderCode='HandInputSource') OR (ProviderCode='HandInputSqlSource')")) if (rec.HasRows()) { HandInputSource = rec.GetString("ProviderName"); } using (var sys = new SysTabl(db)) { _code = sys.SubValue("ProjectInfo", "Project"); _name = sys.SubValue("ProjectInfo", "ProjectName"); sys.PutSubValue("ProjectInfo", "HandInputSource", HandInputSource); //ab _objectsFile = sys.Value("ObjectsFile"); if (string.IsNullOrEmpty(_objectsFile)) { _objectsFile = projectFile; } if (_objectsFile != projectFile) { if (!DaoDb.Check(projectFile, new[] { "CalcParams", "CalcSubParams", "CalcParamsArchive", "Objects", "Signals", "SignalsInUse", "GraficsList", "GraficsValues" })) { AddError("В проекте указан неправильный файл списка объектов", null, projectFile); _objectsFile = projectFile; } } //\ab } } _projectFile = projectFile; } } catch (Exception ex) { AddError("Указан неправильный файл проекта", ex, projectFile); } } return(FinishAtom(State.Project, State.Empty, "Проект:" + _code + ", " + _name)); }
private void ToClone(RecDao rec) { rec.AddNew(); rec.Put("SignalId", IdInClone); rec.Put("Time", _time); rec.Put("Value", _val); rec.Put("Nd", _nd); rec.Update(); }
//Формирование списка параметров для записи в архив и запись их в CalcParamsArchive private void SaveArchive() { try { using (var db = new DaoDb(_projectFile)) { foreach (var cp in CalcParamsId.Values) { if (cp.Inputs.Count == 0 && cp.CalcOn && cp.ErrMess == "") { new ParamArchive(cp); } } var old = new SetS(); var add = new SetS(); using (var rec = new RecDao(db, "CalcParamsArchive", RecordsetTypeEnum.dbOpenTable)) while (rec.Read()) { var code = rec.GetString("FullCode"); if (ArchiveParams.ContainsKey(code)) { old.Add(code); } else { rec.Put("Del", true); } } db.Execute("DELETE * FROM CalcParamsArchive WHERE Del=True"); foreach (var ap in ArchiveParams.Keys) { if (!old.Contains(ap)) { add.Add(ap); } } using (var rec = new RecDao(db, "CalcParamsArchive", RecordsetTypeEnum.dbOpenTable)) { while (rec.Read()) { ArchiveParams[rec.GetString("FullCode")].ToRecordset(rec, false); } foreach (var p in add.Keys) { ArchiveParams[p].ToRecordset(rec, true); } } } } catch (Exception ex) { AddError("Ошибка сохранения архивных параметров", ex); } }
//Запись в таблицу Params private void WriteParams() { AddEvent("Запись списка параметров"); using (var recp = new RecDao(_vedDb, "Params")) using (var recs = new RecDao(_vedDb, "SubParams")) foreach (var par in _params.Values) { par.ToParamsTables(recp, recs, _columnsParams.Values); } }
//Запись в таблицу LinVed private void WriteLinVed() { AddEvent("Запись мгновенных значений"); using (var rec = new RecDao(_vedDb, "VedLin")) foreach (var par in _params.Values) { par.ToLinVed(rec, _columnsVed); _project.ThreadCalc.Procent += 100.0 / _params.Count; } }
//Генерация парамтров private void Generation() { AddEvent("Генерация параметров"); using (var rec = new RecDao(_projectFile, "CalcParams")) using (var recs = new RecDao(rec.DaoDb, "CalcSubParams")) foreach (var par in Params.Values) { par.GenerateParams(TablsList, rec, recs); } }
public GenParam(RecDao rec, ParsingCondition parsingCondition, ParsingGenerator parsingGenerator) : base(rec, parsingCondition, parsingGenerator) { MakeCondition(rec); _task = MakeField(rec, "Task"); _calcParamType = MakeField(rec, "CalcParamType"); _defaultValue = MakeField(rec, "DefaultValue"); CalcParamId = rec.GetInt("CalcParamId"); rec.Put("ErrMess", ErrMess); }
//Сохранение в рекордсет файла данных отчета public void ToRecordset(RecDao rec, bool isAddNew) { if (isAddNew) { rec.AddNew(); } rec.Put("Project", Code); rec.Put("ProjectCode2", Code2); rec.Put("ProjectName", Name); rec.Put("ProjectFile", File); }
//Записывет данные в таблицу Projects в ControllerData, возвращает Id public int ToRecordset(RecDao rec, bool addnew = false) { if (addnew) { rec.AddNew(); } rec.Put("ThreadId", ThreadCalc.Id); rec.Put("Project", Code); rec.Put("ProjectFile", File); rec.Put("Otm", Otm); Id = rec.GetInt("ProjectId"); return(Id); }
//Записать в таблицу характеристику параметра или сигнала private void WriteProp(VedColumn col, RecDao rec) { if (col.Code == "Min" || col.Code == "Max") { string s = _props[col.Code]; double?m = s == null ? (double?)null : s.ToDouble(); rec.Put(col.Code, m); } else { rec.Put(col.Code, _props[col.Code]); } }
public void ToRecordset(RecDao rec, bool addnew = false) { if (addnew) { rec.AddNew(); } rec.Put("ThreadId", ThreadCalc.Id); rec.Put("ProviderType", Type); rec.Put("ProviderName", Name); rec.Put("ProviderCode", Code); rec.Put("ProviderInf", Inf); rec.Put("Otm", Otm); }
//Чтение значений public override void GetValues() { try { DateTime beg = BeginRead.AddMinutes(-BeginRead.Minute).AddSeconds(-BeginRead.Second - 1); DateTime en = EndRead.AddSeconds(1); using (var db = new DaoDb(_db)) { foreach (var tableName in _objects.Keys) { Logger.AddEvent("Чтение значений из таблицы " + tableName + "_ARCHIVE"); using (var rec = new RecDao(db, "SELECT * FROM " + tableName + "_ARCHIVE " + "WHERE (TYPE = 0) AND (Время >= " + beg.ToAccessString() + ") AND (Время <= " + en.ToAccessString() + ")")) while (rec.Read()) { int id = rec.GetInt("PARENT_ID"); if (_objectsId.ContainsKey(id)) { var ob = _objectsId[id]; foreach (var sigCode in ob.Signals.Keys) { ob.Signals[sigCode].AddMoment(rec.GetTime("Время"), rec.GetDouble(sigCode)); } } } } foreach (var tableName in _totals.Keys) { Logger.AddEvent("Чтение значений из таблицы " + tableName + "_TOTALS"); using (var rec = new RecDao(db, "SELECT * FROM " + tableName + "_TOTALS " + "WHERE (Время >= " + beg.ToAccessString() + ") AND (Время <= " + en.ToAccessString() + ")")) while (rec.Read()) { int id = rec.GetInt("PARENT_ID"); if (_totalsId.ContainsKey(id)) { var ob = _totalsId[id]; foreach (var sigCode in ob.Signals.Keys) { ob.Signals[sigCode].AddMoment(rec.GetTime("Время"), rec.GetDouble(sigCode)); } } } } } } catch (Exception ex) { Logger.AddError("Ошибка при чтении данных из файла программы Пролог", ex); } }
//Запись значений по параметру и подпараметрам в линейную ведомость, columns - список колонок таблицы LinVed public void ToLinVed(RecDao rec, DicS <VedColumn> columns) { if (_param.RunParam.CalcValue == null || _param.RunParam.CalcValue.SingleValue == null) { return; } var par = _param.RunParam.CalcValue.SingleValue.ToMomList(); var subs = new List <VedMomList>(); foreach (var col in columns.Values) { if (SubParams.ContainsKey(col.Code)) { subs.Add(new VedMomList(col.Code, SubParams[col.Code])); } } foreach (var mom in par) { rec.AddNew(); rec.Put("IdParam", _id); rec.Put("TimeValue", mom.Time); rec.Put("TimeString", mom.Time.ToStringWithMs()); if (mom.DataType.LessOrEquals(DataType.Real)) { if (columns.ContainsKey("ValueReal")) { rec.Put("ValueReal", mom.Real); } } else if (columns.ContainsKey("ValueString")) { rec.Put("ValueString", mom.String); } if (rec.ContainsField("Nd")) { rec.Put("Nd", mom.Nd); } if (rec.ContainsField("ErrorString")) { rec.Put("ErrorString", mom.Error.Text); } foreach (var sub in subs) { WriteValue(sub.ChangeMoment(mom.Time), rec, sub.Code); } //foreach (var col in _vedSaver.ColumnsParams.Values) // if (col.LinVedView != VedView.None) // WriteProp(col, rec); rec.Update(); } }
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); } }