/// <summary> /// Метод добавления колонок в DataGridView /// </summary> /// <param name="date">Дата отображаемых значений</param> private void addTextBoxColumn(DateTime date) { int indx = ((AdminTS_LK)m_admin).indxTECComponents; //((AdminTS_LK)m_admin).set_CurComponent(0, m_admin.m_curDate); //indx = ((AdminTS_LK)m_admin).m_listTECComponentIndexDetail[this.dgwAdminTable.Columns.Count - ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN)]; if (m_admin.GetIdTECComponent(indx) > (int)TECComponent.ID.TG) { ((DataGridViewAdminLK)this.dgwAdminTable).addTextBoxColumn(m_admin.GetNameTECComponent(indx), m_admin.GetIdTECComponent(indx), m_admin.GetIdGTPOwnerTECComponent(indx), date); DataGridViewCellEventArgs ev; for (int i = 0; i < 24; i++) { if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца { this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture); } else { ; } try { this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 4].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2"); } catch (Exception e) { Logging.Logg().Warning("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерялся индекс)" + e.Message, Logging.INDEX_MESSAGE.NOT_SET); } ev = new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i); ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null, ev); } visibleControlRDGExcel(((AdminTS_LK)m_admin).GetIdTECOwnerTECComponent(indx)); } if (m_admin.GetIdTECComponent(indx) > (int)TECComponent.ID.GTP & m_admin.GetIdTECComponent(indx) < (int)TECComponent.ID.PC) { DataGridViewCellEventArgs ev; for (int i = 0; i < 24; i++) { if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца { this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture); } else { ; } try { this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2"); this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_T].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pmin.ToString("F2"); this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 3].Value = (bool)(((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviationPercent); this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 2].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviation.ToString("F2"); } catch (Exception e) { Logging.Logg().Warning("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерялся индекс)" + e.Message, Logging.INDEX_MESSAGE.NOT_SET); } ev = new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i); ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null, ev); } } m_admin.CopyCurToPrevRDGValues(); ((AdminTS_LK)m_admin).m_listPrevRDGValues.Add(m_admin.m_prevRDGValues); ((AdminTS_LK)m_admin).m_semaIndxTECComponents.Release(); }
/// <summary> /// Метод выборки значений из Excell /// </summary> /// <param name="path">Путь к документу</param> /// <param name="date">Дата за которую необходимо получить значения</param> /// <returns>Возвращает таблицу со значениями</returns> private static DataTable getCSV(string path, DateTime date, out int err) { err = -1; DataTable dataTableRes = new DataTable(); string name_worksheet = string.Empty; DataRow[] rows = new DataRow[25]; int col_worksheet = 0; bool start_work = false; for (int i = 0; i < m_col_name.Length; i++) { dataTableRes.Columns.Add(m_col_name[i]);//Добавление колонок в таблицу } //Открыть поток чтения файла... try { ExcelFile excel = new ExcelFile(); excel.LoadXls(path); //загружаем в созданный экземпляр документ Excel name_worksheet = "Расчет " + mounth[date.Month]; //Генерируем имя необходимого листа в зависимости от переданной даты foreach (ExcelWorksheet w in excel.Worksheets) //Перебор листов { if (w.Name.Equals(name_worksheet, StringComparison.InvariantCultureIgnoreCase)) //Если имя совпадает с сгенерируемым нами то { start_work = true; foreach (ExcelRow r in w.Rows) //перебор строк документа { if (r.Cells[0].Value != null) //Если значение строки не пусто то { if (r.Cells[0].Value.ToString() == date.Date.ToString()) //Если дата в строке совпадает с переданной то { for (int i = 0; i < 24; i++) //Перебор ячеек со значениями по часам { object[] row = new object[3]; row[0] = i.ToString(); //Час if (r.Cells[i + 2].Value == null) //Если ячейка пуста то { row[(int)INDEX_COLUMN.Power] = 0.ToString("F2"); //0 в формате (0.00) } else { row[(int)INDEX_COLUMN.Power] = r.Cells[i + 2].Value.ToString().Trim();//Значение ПБР } if (w.Rows[r.Index + 1].Cells[i + 2].Value == null) { row[(int)INDEX_COLUMN.Temperature] = string.Empty; } else { row[(int)INDEX_COLUMN.Temperature] = w.Rows[r.Index + 1].Cells[i + 2].Value.ToString().Trim(); //Значение температуры } dataTableRes.Rows.Add(row); //Добавляем строку в таблицу } } } if (dataTableRes.Rows.Count >= 24) //Если количестко строк стало равным ли больше 24 то прерываем перебор { //err = (int)INDEX_ERR.NOT_ERR; break; } } } else { if (dataTableRes.Rows.Count == 0 && col_worksheet == excel.Worksheets.Count - 1 && start_work == true) { err = (int)INDEX_ERR.NOT_DATA; break; } else { if (dataTableRes.Rows.Count >= 24 && start_work == true) { err = (int)INDEX_ERR.NOT_ERR; break; } else { err = (int)INDEX_ERR.NOT_WORKSHEET; } } } col_worksheet++; } } catch (Exception e) { Logging.Logg().Error("PanelAdminLK : getCSV - ошибка при открытии потока" + e.Message, Logging.INDEX_MESSAGE.NOT_SET); } return(dataTableRes); }
/// <summary> /// Метод экспорта значений из DataGridView в список значений компонентов /// </summary> protected override void getDataGridViewAdmin() { double value = -1F; bool valid = false; foreach (FormChangeMode.KeyDevice key in ((AdminTS_LK)m_admin).m_listKeyTECComponentDetail) //Перебор компонентов { if (key.Mode == FormChangeMode.MODE_TECCOMPONENT.TG) { //Если ТГ, то int indx_tg = ((AdminTS_LK)m_admin).m_listKeyTECComponentDetail.IndexOf(key), indx_gtp = getIndexGTPOwner(indx_tg); if ((!(indx_tg < 0)) && (!(indx_gtp < 0))) { for (int i = 0; i < 24; i++) //Перебор часовых значений ТГ { foreach (DataGridViewColumn col in dgwAdminTable.Columns) //Перебор колонок DataGridView { if (m_admin.GetNameTECComponent(key, false) == col.HeaderText) //Если имя ТГ соответствует имени колонки { if (dgwAdminTable.Rows[i].Cells[col.Index].Value == null) // , то проверка на пустое поле и запись значения { ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_tg][i].pbr = Convert.ToDouble(0.ToString("F2")); } else { ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_tg][i].pbr = Convert.ToDouble(dgwAdminTable.Rows[i].Cells[col.Index].Value); // '+ 1' за счет DateTime } } } ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_tg][i].pbr_number = "ППБР"; //AdminTS.m_sOwner_PBR = 0; } } else { ; } } else if (key.Mode == FormChangeMode.MODE_TECCOMPONENT.GTP) { //Если ГТП то int indx_gtp = ((AdminTS_LK)m_admin).m_listKeyTECComponentDetail.IndexOf(key); if (!(indx_gtp < 0)) { for (int i = 0; i < 24; i++)//Перебор часовых значений ГТП { try { ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].pbr = Convert.ToDouble(dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Value); // '+ 1' за счет DateTime ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].pmin = Convert.ToDouble(dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Value); if (!(this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 3].Value == null)) { ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].deviationPercent = bool.Parse(this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 3].Value.ToString()); } else { ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].deviationPercent = false; } valid = double.TryParse((string)this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 2].Value, out value); ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].deviation = value; ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].pbr_number = "ППБР"; //AdminTS.m_sOwner_PBR = 0; } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"PanelAdminLK::getDataGridViewAdmin () - ..."), Logging.INDEX_MESSAGE.NOT_SET); } } } else { ; } } } //m_admin.CopyCurRDGValues(); }
/// <summary> /// Метод добавления колонок в DataGridView + заполнение значениями ячеек /// </summary> /// <param name="date">Дата отображаемых значений</param> /// <param name="bNewValues">Признак наличия новых значений (false - обновление оформления представления при изменении цветовой схемы)</param> /// <param name="bSyncReq">Признак необходимости синхронизации по окончании выполнения метода</param> private void addTextBoxColumn(DateTime date, bool bNewValues, bool bSyncReq) { FormChangeMode.KeyDevice key = ((AdminTS_LK)m_admin).CurrentKey; int indx = ((AdminTS_LK)m_admin).GetCurrentIndexTECComponent(); if (key.Id > (int)TECComponent.ID.TG) { // новый столбец ((DataGridViewAdminLK)this.dgwAdminTable).AddTextBoxColumn(m_admin.GetNameTECComponent(key, false), key.Id, m_admin.GetIdOwnerTECComponent(key.Mode == FormChangeMode.MODE_TECCOMPONENT.GTP ? FormChangeMode.MODE_TECCOMPONENT.TEC : FormChangeMode.MODE_TECCOMPONENT.GTP, key).Id, date); for (int i = 0; i < 24; i++) { //Дата/время if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца { this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture); } else { ; } //// цвет 0-го столбца изменяем всегда, на случай изменения цветовой гаммы приложения //this.dgwAdminTable.Rows [i].Cells [0].Style.BackColor = dgwBackColor; try { this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 4].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2"); //this.dgwAdminTable.Rows [i].Cells [this.dgwAdminTable.Columns.Count - 4].Style.BackColor = dgwBackColor; } catch (Exception e) { Logging.Logg().Warning(string.Format("PanelAdminLK : addTextBoxColumn () - нет листа с суточными значениями(снова потерян индекс): {0}", e.Message) , Logging.INDEX_MESSAGE.NOT_SET); } ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null , new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i)); } } else { ; } if ((Admin.GetIdTECComponent(indx) > (int)TECComponent.ID.GTP) && (Admin.GetIdTECComponent(indx) < (int)TECComponent.ID.PC)) { for (int i = 0; i < 24; i++) { //Дата/время if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца { this.dgwAdminTable.Rows [i].Cells [0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture); } else { ; } //// цвет 0-го столбца изменяем на случай изменения цветовой гаммы приложения //this.dgwAdminTable.Rows [i].Cells [0].Style.BackColor = dgwBackColor; try { this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2"); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Style.BackColor = dgwBackColor; this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pmin.ToString("F2"); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Style.BackColor = dgwBackColor; this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 3].Value = (bool)(((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviationPercent); //this.dgwAdminTable.Rows [i].Cells [dgwAdminTable.Columns.Count - 3].Style.BackColor = dgwBackColor; this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 2].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviation.ToString("F2"); //this.dgwAdminTable.Rows [i].Cells [dgwAdminTable.Columns.Count - 2].Style.BackColor = dgwBackColor; } catch (Exception e) { Logging.Logg().Warning(string.Format("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерян индекс): {0}", e.Message) , Logging.INDEX_MESSAGE.NOT_SET); } ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null , new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i)); } } if (bNewValues == true) { m_admin.CopyCurToPrevRDGValues(); ((AdminTS_LK)m_admin).m_listPrevRDGValues.Add(m_admin.m_prevRDGValues); } else { ; } if (bSyncReq == true) { ((AdminTS_LK)m_admin).m_semaIndxTECComponents.Release(); } else { ; } }
/// <summary> /// Заполнить представление значениями /// , при необходимости переносит выполнение в собственный поток /// для регулирования доступа к элементам управления /// </summary> /// <param name="date">Дата отображаемых значений</param> /// <param name="bNewValues">Признак наличия новых значений, иначе требуется изменить оформление представления</param> public override void SetDataGridViewAdmin(DateTime date, bool bNewValues) { int hour = -1 , offset = -1; string strFmtDatetime = string.Empty; double PBR_0 = 0F; HAdmin.RDGStruct[] arSumCurRDGValues = null; IAsyncResult iar; (m_admin as AdminTS_Vyvod).SummatorRDGValues(); if ((m_admin as AdminTS_TG).CompletedGetRDGValues == true) { //??? не очень изящное решение if (IsHandleCreated == true) { if (InvokeRequired == true) { //m_evtAdminTableRowCount.Reset (); iar = this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired); //m_evtAdminTableRowCount.WaitOne (System.Threading.Timeout.Infinite); WaitHandle.WaitAny(new WaitHandle [] { iar.AsyncWaitHandle }, System.Threading.Timeout.Infinite); this.EndInvoke(iar); } else { normalizedTableHourRows(InvokeRequired); } } else { Logging.Logg().Error(@"PanelAdminVyvod::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001); } // получить значения из объекта для обращения к данным PBR_0 = (this.dgwAdminTable as DataGridViewAdminVyvod).m_PBR_0 = (m_admin as AdminTS_Vyvod).m_SumRDGValues_PBR_0; arSumCurRDGValues = new HAdmin.RDGStruct[(m_admin as AdminTS_Vyvod).m_arSumRDGValues.Length]; (m_admin as AdminTS_Vyvod).m_arSumRDGValues.CopyTo(arSumCurRDGValues, 0); this.dgwAdminTable.DefaultCellStyle.BackColor = this.dgwAdminTable.BackColor; for (hour = 0; hour < arSumCurRDGValues.Length; hour++) { strFmtDatetime = m_admin.GetFmtDatetime(hour); offset = m_admin.GetSeasonHourOffset(hour + 1); this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.DATE_HOUR].Value = date.AddHours(hour + 1 - offset).ToString(strFmtDatetime); //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.PLAN].Value = arSumCurRDGValues[hour].pmin.ToString("F2"); this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.PLAN].ToolTipText = arSumCurRDGValues[hour].pbr_number; //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor; // UDGt вычисляется в 'DataGridViewAdminVyvod::onCellValueChanged' (this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.RECOMENDATION] as DataGridViewComboBoxCell).Value = (object)(((int)arSumCurRDGValues[hour].recomendation).ToString()); this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.RECOMENDATION].ToolTipText = arSumCurRDGValues[hour].dtRecUpdate.ToString(); //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION_TYPE].Value = arSumCurRDGValues[hour].deviationPercent.ToString(); //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION].Value = arSumCurRDGValues[hour].deviation.ToString("F2"); //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor; //if (bNewValues == false) { //// самостоятельно изменяем цвет фона, т.к. в этих столбцах ячейки "обновляются" при проверке/изменении значений // this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.UDGt].Style.BackColor = this.dgwAdminTable.BackColor; //} else // ; } } else { ; // рано отображать, не все компоненнты(параметры) опрошены } if (bNewValues == true) { m_admin.CopyCurToPrevRDGValues(); } else { ; } }
public void SummatorRDGValues() { int i = m_listTECComponentIndexDetail.IndexOf(indxTECComponents) , hour = 1 , iDiv = -1; // ' = i == 0 ? 1 : 2' общий делитель для усреднения невозможно определить, т.к. зависит от условия "> 0" TECComponent tc = allTECComponents[m_listTECComponentIndexDetail[i]]; // компонент - параметр вывода if ((i < m_listCurRDGValues.Count) && (m_listCurRDGValues[i].Length > 0)) { if (m_arSumRDGValues == null) { m_arSumRDGValues = new HAdmin.RDGStruct[m_listCurRDGValues[i].Length]; } else if (!(m_arSumRDGValues.Length == m_listCurRDGValues[i].Length)) { throw new Exception(string.Format(@"AdminTS_Vyvod::GetSumRDGValues () - не совпадают размеры массивов (часы в сутках) с полученными данными ПБР для компонента ID={0}...", tc.m_id)); } else { ; } if (m_curRDGValues_PBR_0 > 0) { m_SumRDGValues_PBR_0 += m_curRDGValues_PBR_0; m_SumRDGValues_PBR_0 /= i == 0 ? 1 : 2; // делитель для усреднения } else { ; } for (hour = 0; hour < m_listCurRDGValues[i].Length; hour++) { //arSumCurRDGValues[hour].pbr_number = arCurRDGValues[hour].pbr_number; //if (arCurRDGValues[hour].pbr > 0) arSumCurRDGValues[hour].pbr += arCurRDGValues[hour].pbr; else ; // для всех элементов д.б. одинаковые! if (m_listCurRDGValues[i][hour].pmin > 0) { m_arSumRDGValues[hour].pmin += m_listCurRDGValues[i][hour].pmin; m_arSumRDGValues[hour].pmin /= i == 0 ? 1 : 2; // делитель для усреднения } else { ; } //if (arCurRDGValues[hour].pmax > 0) arSumCurRDGValues[hour].pmax += arCurRDGValues[hour].pmax; else ; // рекомендации для всех элементов д.б. одинаковые! if (!(m_listCurRDGValues[i][hour].recomendation == 0F)) { m_arSumRDGValues[hour].recomendation += m_listCurRDGValues[i][hour].recomendation; m_arSumRDGValues[hour].recomendation /= i == 0 ? 1 : 2; // делитель для усреднения } else { ; } // типы отклонений для всех элементов д.б. одинаковые! if (!(m_listCurRDGValues[i][hour].deviationPercent == m_arSumRDGValues[hour].deviationPercent)) { m_arSumRDGValues[hour].deviationPercent = m_listCurRDGValues[i][hour].deviationPercent; } else { ; } // величины отклонения для всех элементов д.б. одинаковые! if (m_listCurRDGValues[i][hour].deviation > 0) { m_arSumRDGValues[hour].deviation += m_listCurRDGValues[i][hour].deviation; m_arSumRDGValues[hour].deviation /= i == 0 ? 1 : 2; // делитель для усреднения } else { ; } } } else { Logging.Logg().Error(string.Format(@"PanelAdminVyvod.AdminTS_Vyvod::SummatorRDGValues (комп.ID={0}, комп.индекс={1}, комп.индекс_детальный={2}) - суммирование (кол-во часов={3}) не выполнено..." , tc.m_id, indxTECComponents, i, m_listCurRDGValues[i].Length) , Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Отобразить значения в представлении /// </summary> /// <param name="date">Дата, за которую получены значения для отображения</param> /// <param name="bNewValues">Признак наличия новых значений, иначе требуется изменить оформление представления</param> public override void setDataGridViewAdmin(DateTime date, bool bNewValues) { int offset = -1 , nextIndx = -1; string strFmtDatetime = string.Empty; switch (modeGetRDGValues) { case MODE_GET_RDG_VALUES.DISPLAY: //??? не очень изящное решение if (IsHandleCreated == true) { if (InvokeRequired == true) { m_evtAdminTableRowCount.Reset(); // кол-во строк может быть изменено(нормализовано) только в том потоке,в котором было выполнено создание элемента управления this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired); //??? ожидать, пока не завершится выполнение предыдущего потока m_evtAdminTableRowCount.WaitOne(System.Threading.Timeout.Infinite); } else { normalizedTableHourRows(InvokeRequired); } } else { Logging.Logg().Error(@"PanelAdminKomDisp::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001); } ((DataGridViewAdminKomDisp)this.dgwAdminTable).m_PBR_0 = m_admin.m_curRDGValues_PBR_0; //??? отобразить значения - почему не внутри класса-объекта представления for (int i = 0; i < m_admin.m_curRDGValues.Length; i++) { strFmtDatetime = m_admin.GetFmtDatetime(i); offset = m_admin.GetSeasonHourOffset(i + 1); this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Value = date.AddHours(i + 1 - offset).ToString(strFmtDatetime); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Value = m_admin.m_curRDGValues[i].pbr.ToString("F2"); this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].ToolTipText = m_admin.m_curRDGValues[i].pbr_number; this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor; if (i > 0) { this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues[i].pbr + m_admin.m_curRDGValues[i - 1].pbr) / 2) + m_admin.m_curRDGValues[i].recomendation).ToString("F2"); } else { this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues[i].pbr + m_admin.m_curRDGValues_PBR_0) / 2) + m_admin.m_curRDGValues[i].recomendation).ToString("F2"); } this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Value = m_admin.m_curRDGValues[i].recomendation.ToString("F2"); this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].ToolTipText = m_admin.m_curRDGValues[i].dtRecUpdate.ToString(); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Value = m_admin.m_curRDGValues[i].fc.ToString(); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Value = m_admin.m_curRDGValues[i].deviationPercent.ToString(); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Value = m_admin.m_curRDGValues[i].deviation.ToString("F2"); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor; } if (bNewValues == true) { m_admin.CopyCurToPrevRDGValues(); } else { ; } break; case MODE_GET_RDG_VALUES.EXPORT: nextIndx = Admin.AddValueToExportRDGValues(m_admin.m_curRDGValues, date); if (nextIndx < 0) { Invoke(new Action(btnRefresh.PerformClick)); } else { Admin.GetRDGValues(nextIndx, date); } break; default: break; } }
private void btnImportCSV_PBRValues_Click(object sender, EventArgs e) { int err = -1; // признак ошибки при определении номера ПБР //Вариант №1 (каталог) //FolderBrowserDialog folders = new FolderBrowserDialog(); //folders.ShowNewFolderButton = false; //folders.RootFolder = Environment.SpecialFolder.Desktop; //folders.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //@"D:\Temp"; //if (folders.ShowDialog(FormMain.formParameters) == DialogResult.OK) // ((AdminTS_KomDisp)m_admin).ImpPPBRCSVValues(mcldrDate.SelectionStart, folders.SelectedPath + @"\"); //else // ; //Вариант №2 (файл) OpenFileDialog files = new OpenFileDialog(); files.Multiselect = false; //files.InitialDirectory = Environment.GetFolderPath (Environment.SpecialFolder.Desktop); files.InitialDirectory = AdminTS_KomDisp.Folder_CSV; files.DefaultExt = @"csv"; files.Filter = @"csv файлы (*.csv)|*.csv"; files.Title = "Выберите файл с ПБР..."; if (files.ShowDialog(FormMain.formParameters) == DialogResult.OK) { Logging.Logg().Action(string.Format(@"PanelAdminKomDisp::btnImportCSV_PBRValues_Click () - выбран CSV-макет {0}...", files.FileName), Logging.INDEX_MESSAGE.NOT_SET); int iRes = 0 , curPBRNumber = m_admin.GetPBRNumber(out err); //Текущий номер ПБР //Дата ПБР, номер ПБР из наименования файла object[] prop = AdminTS_KomDisp.GetPropertiesOfNameFilePPBRCSVValues(files.FileName); //if (!((DateTime)prop[0] == DateTime.Now.Date)) if (!(((DateTime)prop[0]).CompareTo(m_admin.m_curDate.Date) == 0)) { iRes = -1; } else //Сравнить с текущим номером ПБР // , номер ПБР по умолчанию не рассматривается (err == 0) if ((!((int)prop[1] > curPBRNumber)) && (err == 0)) { iRes = -2; } else { ; //iRes = 0 } //Проверка на ошибки if (!(iRes == 0)) { string strMsg = string.Empty; //Ошибка по дате if (iRes == -1) { strMsg = string.Format(@"Дата загружаемого [{0:dd.MM.yyyy}] набора ПБР не соответствует установл./дате [{1:dd.MM.yyyy}]" , ((DateTime)prop[0]), m_admin.m_curDate.Date); MessageBox.Show(this, strMsg, @"Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Ошибка по номеру ПБР if (iRes == -2) { strMsg = string.Format(@"Номер загружаемого набора [{0}] ПБР не выше, чем текущий [{1}].{2}Продолжить?", (int)prop[1], curPBRNumber, Environment.NewLine); if (MessageBox.Show(this, strMsg, @"Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { iRes = 0; } else { ; } } else { ; } } } else { ; } //Еще одна проверка на ошибки (т.к. была возможность ее подтвердить) if (iRes == 0) { ((AdminTS_KomDisp)m_admin).ImpCSVValues(mcldrDate.SelectionStart, files.FileName); } else { Logging.Logg().Action(string.Format(@"PanelAdminKomDisp::btnImportCSV_PBRValues_Click () - отмена импорта значений CSV-макета, ошибка={0}...", iRes), Logging.INDEX_MESSAGE.NOT_SET); } } else { Logging.Logg().Action(string.Format(@"PanelAdminKomDisp::btnImportCSV_PBRValues_Click () - отмена выбора CSV-макета..."), Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Отобразить значения в представлении /// </summary> /// <param name="date">Дата, за которую получены значения для отображения</param> /// <param name="bResult">Признак наличия новых значений, иначе требуется изменить оформление представления</param> public override void SetDataGridViewAdmin(DateTime date, bool bResult) { int offset = -1 , nextIndx = -1; string strFmtDatetime = string.Empty; IAsyncResult iar; Action exportPBRValuesEnded = delegate() { ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY; btnRefresh.PerformClick(); }; if ((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY) { if (bResult == true) { //??? не очень изящное решение if (IsHandleCreated == true) { if (InvokeRequired == true) { //m_evtAdminTableRowCount.Reset (); // кол-во строк может быть изменено(нормализовано) только в том потоке,в котором было выполнено создание элемента управления iar = this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired); //??? ожидать, пока не завершится выполнение предыдущего потока //m_evtAdminTableRowCount.WaitOne (System.Threading.Timeout.Infinite); WaitHandle.WaitAny(new WaitHandle [] { iar.AsyncWaitHandle }, System.Threading.Timeout.Infinite); this.EndInvoke(iar); } else { normalizedTableHourRows(InvokeRequired); } } else { normalizedTableHourRows(false); if (!((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST)) { Logging.Logg().Error(@"PanelAdminKomDisp::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001); } else { ; } } ((DataGridViewAdminKomDisp)this.dgwAdminTable).m_PBR_0 = m_admin.m_curRDGValues_PBR_0; //??? отобразить значения - почему не внутри класса-объекта представления for (int i = 0; i < m_admin.m_curRDGValues.Length; i++) { strFmtDatetime = m_admin.GetFmtDatetime(i); offset = m_admin.GetSeasonHourOffset(i + 1); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Value = date.AddHours(i + 1 - offset).ToString(strFmtDatetime); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Value = m_admin.m_curRDGValues [i].pbr.ToString("F2"); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].ToolTipText = m_admin.m_curRDGValues [i].pbr_number; //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor; if (i > 0) { this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues [i].pbr + m_admin.m_curRDGValues [i - 1].pbr) / 2) + m_admin.m_curRDGValues [i].recomendation).ToString("F2"); } else { this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues [i].pbr + m_admin.m_curRDGValues_PBR_0) / 2) + m_admin.m_curRDGValues [i].recomendation).ToString("F2"); } //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Value = m_admin.m_curRDGValues [i].recomendation.ToString("F2"); this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].ToolTipText = m_admin.m_curRDGValues [i].dtRecUpdate.ToString(); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Value = m_admin.m_curRDGValues [i].fc.ToString(); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Value = m_admin.m_curRDGValues [i].deviationPercent.ToString(); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor; this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Value = m_admin.m_curRDGValues [i].deviation.ToString("F2"); //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor; } m_admin.CopyCurToPrevRDGValues(); } else { ; } } else if ((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT) { nextIndx = bResult == true ? Admin.AddValueToExportRDGValues(m_admin.m_curRDGValues, date) : -1; if (!(nextIndx > 0)) { if (InvokeRequired == true) { Invoke((MethodInvoker) delegate() { exportPBRValuesEnded(); }); } else { exportPBRValuesEnded(); } } else { Admin.GetRDGValues(nextIndx, date); } } // сообщить в модульный тест о завершении очередной итерации EventUnitTestSetDataGridViewAdminCompleted?.Invoke(); }
static void Main() { int iRes = 0; //Если назначить неизвестный тип логирования - 1-е сообщения б. утеряны Logging.SetMode(); ////Если в строке Assembly заменить номер Построения на "*", номер Ревизия на "очистить" //Version version = Assembly.GetExecutingAssembly().GetName().Version; //DateTime buildDate = new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision * 2); string strHeaderError = string.Empty; bool bRun = false; s_mtxApp = new Mutex(true, Logging.AppName, out bRun); if (bRun == true) { try { ProgramBase.Start(); } catch (Exception e) { //MessageBox.Show(null, @"Возможно, повторный запуск приложения" + @".\nили обратитесь к оператору тех./поддержки по тел. 4444 или по тел. 289-03-37.", "Ошибка инициализации!", MessageBoxButtons.OK, MessageBoxIcon.Stop); MessageBox.Show(null, e.Message + "\nили обратитесь к оператору тех./поддержки по тел. 4444 или по тел. 289-03-37.", "Ошибка инициализации!", MessageBoxButtons.OK, MessageBoxIcon.Stop); iRes = -1; } FormMain formMain = null; if (iRes == 0) { try { formMain = new FormMain(); } catch (Exception e) { strHeaderError = "Ошибка запуска приложения"; MessageBox.Show((IWin32Window)null, e.Message + Environment.NewLine + ProgramBase.MessageAppAbort, strHeaderError); Logging.Logg().Exception(e, strHeaderError, Logging.INDEX_MESSAGE.NOT_SET); } if (!(formMain == null)) { try { Application.Run(formMain); } catch (Exception e) { strHeaderError = "Ошибка выполнения приложения"; MessageBox.Show((IWin32Window)null, e.Message + Environment.NewLine + ProgramBase.MessageAppAbort, strHeaderError); Logging.Logg().Exception(e, strHeaderError, Logging.INDEX_MESSAGE.NOT_SET); } } else { ; } ProgramBase.Exit(); } else { ; } } else { strHeaderError = @"Ошибка"; MessageBox.Show((IWin32Window)null, @"Запуск дублирующего экземпляра приложения" + Environment.NewLine + ProgramBase.MessageAppAbort, strHeaderError); } }
/// <summary> /// Обработчик события - нажатие кнопки "Экспорт" /// </summary> private void panelManagement_OnEvtExportDo() { KEY_CONTROLS key_ctrl = KEY_CONTROLS.UNKNOWN; HDataGridView dgv; string pathRemoteTemplate = string.Empty ,pathUserTemplate = string.Empty ,nameFolderRemoteTemplate = NAMEFOLDER_TEMPLATE_SOTIASSO_DAY ,nameFolderUserTemplate = string.Empty ,nameFileTemplate = NAMEFILE_TEMPLATE_SOTIASSO_DAY; ExcelFile excel; System.Data.DataTable tableExportDo; int iColumn = STARTCOLUMN_TEMPLATE_SOTIASSO_DAY ,iStartRow = STARTROW_TEMPLATE_SOTIASSO_DAY ,i_agregate = I_AGREGATE; //Excel Application Object Microsoft.Office.Interop.Excel.Application oExcelApp; Microsoft.Office.Interop.Excel.Workbook oExcelWorkbook; try { // определить путь к шаблону отчета pathRemoteTemplate = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,Path.Combine(nameFolderRemoteTemplate,nameFileTemplate)); // определить каталог для размещения итогового отчета nameFolderUserTemplate = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),@"Statistic"); // определить полный путь для размещения итогового отчета pathUserTemplate = Path.Combine(nameFolderUserTemplate ,nameFileTemplate.Replace(@"TEC",(string)(findControl(KEY_CONTROLS.CBX_TEC_LIST.ToString()) as ComboBox).SelectedItem) .Replace(@"DATE",m_panelManagement.CurDateTime.Date.ToString(@"yyyyMMdd"))); // создать при необходимости каталог на ПК пользователя if (Directory.Exists(nameFolderUserTemplate) == false) { Directory.CreateDirectory(nameFolderUserTemplate); } else { ; } // проверить: выполняется ли уже MS Excel oExcelApp = null; try { oExcelApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); } catch { } finally { if (object.Equals(oExcelApp,null) == true) { // если не выполняется - создать объект MS Excel oExcelApp = new Microsoft.Office.Interop.Excel.Application(); } else { ; } } // проверить: существует ли уже файл с отчетом if (File.Exists(pathUserTemplate) == true) { try { // удалить файл, т.к. на его место запишем новый File.Delete(pathUserTemplate); } catch { // нет доступа к файлу, возможно, он уже открыт в MS Excel - найти открытую книгу с известным наименованием oExcelWorkbook = oExcelApp.Workbooks.Cast <Microsoft.Office.Interop.Excel.Workbook>().FirstOrDefault(book => { return(book.FullName.Equals(pathUserTemplate) == true); }); if (object.Equals(oExcelWorkbook,null) == false) { // закрыть - если была найдена oExcelWorkbook.Close(false); } else { ; } // книгу "освободили" - можно удалить try { // но только в том случае, если книга была занята действительно MS Excel File.Delete(pathUserTemplate); } catch { // иначе - выход (книгу блокирует другая программа) return; } } } else { ; } // копируем шаблон на ПК пользователя File.Copy(pathRemoteTemplate,pathUserTemplate); // объект для работы с ячейками книги MS Excel excel = new GemBox.Spreadsheet.ExcelFile(); excel.LoadXls(pathUserTemplate); //excel.Worksheets[0].Rows[0].Cells[0].Value = i_agregate; // устанавливаем дату excel.Worksheets[0].Rows[0].Cells[1].Value = m_panelManagement.CurDateTime.Date.ToShortDateString(); excel.Worksheets[0].Rows[0].Cells[2].Value = m_panelManagement.CurDateTime.Date.AddDays(1).ToShortDateString(); foreach (CONN_SETT_TYPE conn_sett_type in _types) { key_ctrl = conn_sett_type == CONN_SETT_TYPE.DATA_AISKUE ? KEY_CONTROLS.DGV_AIISKUE_VALUE : conn_sett_type == CONN_SETT_TYPE.DATA_SOTIASSO ? KEY_CONTROLS.DGV_SOTIASSO_VALUE : KEY_CONTROLS.UNKNOWN; if (!(key_ctrl == KEY_CONTROLS.UNKNOWN)) { dgv = findControl(key_ctrl.ToString()) as HDataGridView; try { tableExportDo = dgv.GetValues(); if (tableExportDo.Columns.Count > 0) { excel.Worksheets[0].InsertDataTable(tableExportDo,iStartRow - 1,iColumn,true); iColumn += tableExportDo.Columns.Count; } else { // нет столбцов - нет строк - нет значений для вставки ; } } catch (Exception e) { Logging.Logg().Exception(e,string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - conn_sett_type={0}, заполнение значениями...",conn_sett_type),Logging.INDEX_MESSAGE.NOT_SET); } } else { Logging.Logg().Error(string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - не удалось найти элемент графического интерфейса для {0}",conn_sett_type) ,Logging.INDEX_MESSAGE.NOT_SET); } } excel.SaveXls(pathUserTemplate); //System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(@"excel.exe", string.Format("\"{0}\"", pathUserTemplate))); oExcelApp.Workbooks.Open(pathUserTemplate); oExcelApp.Visible = true; } catch (Exception e) { Logging.Logg().Exception(e,string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - подготовка шаблона..."),Logging.INDEX_MESSAGE.NOT_SET); } }
private void mcldrDate_DateSelected(object sender, DateRangeEventArgs e) { DialogResult result; Errors resultSaving; string prev_datetime = m_admin.m_prevDate.ToString(); bool bRequery = false; getDataGridViewAdmin(); if (m_admin.WasChanged()) { result = MessageBox.Show(this, "Данные были изменены но не сохранялись.\nЕсли Вы хотите сохранить изменения, нажмите \"да\".\nЕсли Вы не хотите сохранять изменения, нажмите \"нет\".\nДля отмены действия нажмите \"отмена\".", "Внимание", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation); } else { result = DialogResult.No; } switch (result) { case DialogResult.Yes: resultSaving = m_admin.SaveChanges(); if (resultSaving == Errors.NoError) { bRequery = true; } else { if (resultSaving == Errors.InvalidValue) { MessageBox.Show(this, "Изменение ретроспективы недопустимо!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { MessageBox.Show(this, "Не удалось сохранить изменения, возможно отсутствует связь с базой данных.", "Ошибка сохранения", MessageBoxButtons.OK, MessageBoxIcon.Error); } mcldrDate.SetDate(m_admin.m_prevDate); } break; case DialogResult.No: bRequery = true; break; case DialogResult.Cancel: mcldrDate.SetDate(m_admin.m_prevDate); break; } if (bRequery == true) { ClearTables(); initTableHourRows(); m_admin.GetRDGValues(/*(int)m_admin.m_typeFields,*/ m_listTECComponentIndex[comboBoxTecComponent.SelectedIndex], mcldrDate.SelectionStart); Logging.Logg().Action("PanelAdminKomDisp:DateSelected - Изменение даты:[" + prev_datetime + "]=>[" + m_admin.m_curDate.ToString() + "]", Logging.INDEX_MESSAGE.NOT_SET); } else { ; } }
public FormTECComponent(ConnectionSettings connSett) { int err = 0; //m_connectionSetttings = connSett; InitializeComponent(); m_list_UIControl = new List <System.Windows.Forms.Control> (); m_list_UIControl.Add(dataGridViewTEC); //INDEX_UICONTROL.TEC m_list_UIControl.Add(dataGridViewTECComponent); //INDEX_UICONTROL.TEC_COMPONENT m_list_UIControl.Add(dataGridViewTG); //INDEX_UICONTROL.TG this.ColumnTextBoxTECName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TEC].Width - (2 * (23 + 1)); //Пока добавлять/удалять ТЭЦ нельзя this.ColumnTextBoxTECName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TEC].Width - (1 * (23 + 1) + 2); this.ColumnButtonTECDel.Visible = false; this.ColumnTECComponentName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TEC_COMPONENT].Width - (1 * (23 + 1) + 2); this.ColumnTGName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TG].Width - (1 * (23 + 1) + 2); m_list_UIControl.Add(textBoxTECAdd); m_list_UIControl.Add(buttonTECAdd); m_list_UIControl.Add(textBoxTECComponentAdd); m_list_UIControl.Add(buttonTECComponentAdd); m_list_UIControl.Add(comboBoxTGAdd); m_list_UIControl.Add(buttonTGAdd); m_lockObj = new Object(); lock (m_lockObj) { } //Пока добавлять/удалять ТЭЦ нельзя m_list_UIControl [(int)INDEX_UICONTROL.TEXTBOX_TEC_ADD].Enabled = false; m_list_UIControl[(int)INDEX_UICONTROL.BUTTON_TEC_ADD].Enabled = false; // + 1 для ТГ m_list_data_original = new DataTable[(int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN)]; m_list_data = new DataTable[(int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN)]; m_idListener = DbSources.Sources().Register(connSett, false, @"Изменение состава ТЭЦ(ГТП, ЩУ)"); DbConnection conn = DbSources.Sources().GetConnection(m_idListener, out err); int i = -1; //for (i = (int)(FormChangeMode.MODE_TECCOMPONENT.TEC); i < (int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN + 1); i++) for (i = (int)(FormChangeMode.MODE_TECCOMPONENT.TEC); i < (int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN); i++) { if (m_list_data_original[i] == null) { m_list_data_original[i] = DbTSQLInterface.Select(ref conn, "SELECT * FROM " + FormChangeMode.getPrefixMode(i) + "_LIST", null, null, out err); } else { ; } m_list_data[i] = m_list_data_original[i].Copy(); Logging.Logg().Debug(@"FormTECComponent::FormTECComponent () - m_list_data[" + ((FormChangeMode.MODE_TECCOMPONENT)i).ToString() + @"].Columns.Count = " + m_list_data[i].Columns.Count, Logging.INDEX_MESSAGE.NOT_SET); } m_list_dataRow = new List <DataRow[]> (); //[(int)(INDEX_UICONTROL.DATAGRIDVIEW_TG - INDEX_UICONTROL.DATAGRIDVIEW_TEC + 1)]; for (i = (int)(INDEX_UICONTROL.DATAGRIDVIEW_TEC - INDEX_UICONTROL.DATAGRIDVIEW_TEC); i < (int)(INDEX_UICONTROL.DATAGRIDVIEW_TG - INDEX_UICONTROL.DATAGRIDVIEW_TEC + 1); i++) { m_list_dataRow.Add(null); } fillDataGridView(INDEX_UICONTROL.DATAGRIDVIEW_TEC); for (i = (int)FormChangeMode.MODE_TECCOMPONENT.TEC; i < (int)FormChangeMode.MODE_TECCOMPONENT.TG; i++) { comboBoxMode.Items.Add(FormChangeMode.getNameMode((short)i)); } comboBoxMode.SelectedIndex = 0; //StartThreadUIControl(); timerUIControl.Start(); }