/// <summary> /// Получение суммы по столбцу /// </summary> /// <param name="indxCol">индекс столбца</param> /// <returns>сумма по столбцу</returns> private double summaColumnValues(int indxCol, out int counter) { counter = 0; double dblRes = 0F; try { foreach (DataGridViewRow row in Rows) { if (row.Index < Rows.Count - 1) { // все кроме крайней строки if ((!(row.Cells[indxCol].Value == null)) && (string.IsNullOrEmpty(row.Cells[indxCol].Value.ToString()) == false)) { // только, если есть значение для разбора dblRes += HMath.doubleParse(row.Cells[indxCol].Value.ToString()); counter++; } else { ; } } else { ; } } } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"PanelTaskVedomostBl::summaColumnValues () - суммирования столбца №{0}...", indxCol), Logging.INDEX_MESSAGE.NOT_SET); } return(dblRes); }
/// <summary> /// Заполнение массива данными /// </summary> /// <param name="dgvActive">активное отображение данных</param> private void fillToArray(DataGridView dgvActive) { arrayData = new object[dgvActive.RowCount, dgvActive.ColumnCount - 1]; int indexArray = -1; for (int i = 0; i < dgvActive.Rows.Count; i++) { indexArray = 0; arrayData[i, indexArray++] = dgvActive.Rows[i].Tag.ToString(); for (int j = 0; j < dgvActive.Columns.Count; j++) { //if (j >= ((int)DataGridViewVedomostBl.INDEX_SERVICE_COLUMN.COUNT - 1)) { //if (j > ((int)DataGridViewVedomostBl.INDEX_SERVICE_COLUMN.COUNT - 1)) arrayData[i, indexArray] = //s_VedCalculate.AsParseToF HMath.doubleParse (dgvActive.Rows[i].Cells[j].Value.ToString()); } //else //??? получить дату // arrayData[i, indexArray] = dgvActive.Rows[i].Cells[j].Value.ToString(); indexArray++; //} else // ; } }
/// <summary> /// Проверка на изменение значений в двух таблицах /// </summary> /// <param name="origin">оригинальная таблица</param> /// <param name="editValue">значение</param> /// <param name="i">номер строки</param> /// <param name="idAlg">номер алгоритма</param> /// <param name="typeValues">тип данных</param> /// <returns>показатель изменения</returns> private int diffRowsInTables(DataTable origin, double editValue, int i, string formatRound, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues) { int quality = 1; double originValues; //??? зачем сортировка origin = sortDataTable(origin, "ID_PUT, WR_DATETIME"); if (origin.Rows.Count - 1 < i) { originValues = 0; } else { originValues = //HPanelTepCommon.AsParseToF( HMath.doubleParse( origin.Rows[i]["VALUE"].ToString() ); } switch (typeValues) { case HandlerDbTaskCalculate.ID_VIEW_VALUES.ARCHIVE: //??? почему сравниваются строки if (originValues.ToString(formatRound, CultureInfo.InvariantCulture).Equals(editValue.ToString().Trim()) == false) { quality = 2; } break; case HandlerDbTaskCalculate.ID_VIEW_VALUES.SOURCE_LOAD: quality = 1; break; case HandlerDbTaskCalculate.ID_VIEW_VALUES.DEFAULT: break; default: break; } return(quality); }
private Errors saveCSVValues(int indx, object pbr_number) { Errors errRes = Errors.NoSet; RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; int hour = -1; double val = -1F; string name_future = string.Empty; CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE; if (pbr_number is string) { typeValues = CONN_SETT_TYPE.PBR; } else if (pbr_number is CONN_SETT_TYPE) { typeValues = (CONN_SETT_TYPE)pbr_number; //ADMIN } else { ; } if ((typeValues == CONN_SETT_TYPE.PBR) || (typeValues == CONN_SETT_TYPE.ADMIN)) { List <DataRow> rowsTECComponent = null; //Получить значения для сохранения name_future = allTECComponents[indx].name_future; rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'")); //Вариант №2 - тестовый //foreach (DataRow r in m_tableValuesResponse.Rows) // if (name_future.Equals(r["GTP_ID"]) == true) // rowsTECComponent.Add(r); // else // ; //Проверить наличие записей для ГТП if (rowsTECComponent.Count > 0) { // добавление недостающих строк путем копирования крайней if (rowsTECComponent.Count < 24) { // фрагмент кода выполняется при загрузке //while (rowsTECComponent.Count < 24) { // rowsTECComponent.Add(rowsTECComponent[rowsTECComponent.Count - 1]); // if (m_tableValuesResponse.Columns.Contains(@"SESSION_INTERVAL") == true) // rowsTECComponent[rowsTECComponent.Count - 1][@"SESSION_INTERVAL"] = rowsTECComponent.Count - 1; // else // ; //} } else { Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..." , name_future, rowsTECComponent.Count) , Logging.INDEX_MESSAGE.NOT_SET); } foreach (DataRow r in rowsTECComponent) { hour = int.Parse(r[@"SESSION_INTERVAL"].ToString()); try { switch (typeValues) { case CONN_SETT_TYPE.PBR: HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr); HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin); HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax); curRDGValues[hour].pbr_number = pbr_number as string; ////Отладка //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number); break; case CONN_SETT_TYPE.ADMIN: HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation); curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1; HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation); curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")" , Logging.INDEX_MESSAGE.NOT_SET); errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { break; } else { ; } } if (errRes == Errors.NoSet) { //Очистить тек./массив с данными ClearValues(); //Копировать полученные значения в "текущий массив" curRDGValues.CopyTo(m_curRDGValues, 0); indxTECComponents = indx; errRes = SaveChanges() //Errors.NoSet //Errors.NoError ; } else { ; //errRes = Errors.ParseError; } } else { errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { //Пропустить запись ГТП, разрешить переход к следующей //Псевдо-закончена обработка всех событий completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS); } else { ; } } else { ; } return(errRes); }
private static DataTable importInValues(long idSession , Int16 quality , DataTable tablePrjPars , DataTable tableDictPrjRatio , out int err) { err = 0; List <LINK_ID_to_NUMCOLUMN> listLinkIdToNumColumn = new List <LINK_ID_to_NUMCOLUMN> { new LINK_ID_to_NUMCOLUMN() { id = 1029, iNumColumn = 4 } , new LINK_ID_to_NUMCOLUMN() { id = 1030, iNumColumn = 5 } , new LINK_ID_to_NUMCOLUMN() { id = 1031, iNumColumn = 6 } , new LINK_ID_to_NUMCOLUMN() { id = 1032, iNumColumn = 7 } , new LINK_ID_to_NUMCOLUMN() { id = 1033, iNumColumn = 8 } , new LINK_ID_to_NUMCOLUMN() { id = 1034, iNumColumn = 9 } , new LINK_ID_to_NUMCOLUMN() { id = 5, iNumColumn = 10 } }; OleDbCommand cmd; OleDbDataReader reader; DataTable tableRes = null; string nAlg = string.Empty , mera = string.Empty; int idComp = -1, numColumnComp = -1 , iNumColumnRatio = -1, ratioValue = -1, dbRatioValue = -1 , cntRowValues = -1; object[] vals = null; double val = -1F; DataRow[] arSelPrjPars = null // массив строк при поиске проектных данных по номеру алгоритма , arSelDictPrjRatio = null; try { iNumColumnRatio = 3; tableRes = new DataTable(); tableRes.Columns.AddRange(new DataColumn[] { new DataColumn("ID_PUT", typeof(Int32)) , new DataColumn("ID_SESSION", typeof(long)) , new DataColumn("QUALITY", typeof(Int16)) , new DataColumn("VALUE", typeof(double)) //, new DataColumn ("AVG", typeof(Int16)) , new DataColumn("WR_DATETIME", typeof(DateTime)) , new DataColumn("EXTENDED_DEFINITION", typeof(Int32)) }); using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.CheckPathExists = openFileDialog.CheckFileExists = openFileDialog.ShowReadOnly = openFileDialog.ShowHelp = openFileDialog.RestoreDirectory = true; openFileDialog.Multiselect = false; openFileDialog.Title = "Выберите файл для импорта значений"; openFileDialog.InitialDirectory = @"D:\TEPW"; openFileDialog.DefaultExt = "xls"; openFileDialog.Filter = "dBase(Расчет ТЭП)-файлы (*.dbf)|*.dbf" + @"|" + "MS Excel(2003)-файлы (*.xls)|*.xls"; openFileDialog.FilterIndex = 0; if (openFileDialog.ShowDialog(Control.FromHandle(Process.GetCurrentProcess().MainWindowHandle)) == DialogResult.OK) { using (OleDbConnection conn = new OleDbConnection( //ConnectionSettings.GetConnectionStringDBF(Path.GetDirectoryName(openFileDialog.FileName)) string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=dBASE III;", Path.GetDirectoryName(openFileDialog.FileName)) )) { conn.Open(); cmd = new OleDbCommand("SELECT * FROM inblok"); cmd.Connection = conn; reader = cmd.ExecuteReader(); vals = new object[reader.FieldCount]; while (reader.Read() == true) { try { cntRowValues = reader.GetValues(vals); nAlg = ((string)vals[0]).Trim(); arSelPrjPars = tablePrjPars.Select(string.Format(@"N_ALG='{0}'", nAlg)); //0 - индекс поля 'ORDER' ('N_ALG') ratioValue = 0; mera = vals[iNumColumnRatio] is DBNull == false ? ((string)vals[iNumColumnRatio]).Trim().ToLower() : string.Empty; arSelDictPrjRatio = new DataRow[] { tableDictPrjRatio.AsEnumerable().ToList().Find(r => { // только если наименование не пустое И индекс 1-го найденного символа = 0 return(((string.IsNullOrEmpty(((string)r[@"NAME_RU"]).Trim()) == false) && (string.IsNullOrEmpty(mera) == false)) ? mera.IndexOf(((string)r[@"NAME_RU"]).Trim()) == 0 : false); }) }; if (!(arSelDictPrjRatio[0] == null)) { ratioValue = (int)arSelDictPrjRatio[0]["VALUE"]; } else { ; } foreach (DataRow r in arSelPrjPars) { idComp = Int32.Parse(r[@"ID_COMP"].ToString().Trim()); numColumnComp = listLinkIdToNumColumn.Find(item => { return(item.id == idComp); }).iNumColumn; val = HMath.doubleParse((string)vals[numColumnComp]); dbRatioValue = 0; arSelDictPrjRatio = tableDictPrjRatio.Select(string.Format(@"ID ={0}", (int)r[@"ID_RATIO"])); if (arSelDictPrjRatio.Length > 0) { if (arSelDictPrjRatio.Length == 1) { dbRatioValue = (int)arSelDictPrjRatio[0]["VALUE"]; } else { ; } } else { ; } // проверить требуется ли преобразование if (!(ratioValue == dbRatioValue)) { // домножить значение на коэффициент val *= Math.Pow(10F, ratioValue - dbRatioValue); } else { ; } //if (Double.TryParse(((string)vals[numColumnComp]).Trim(), out val) == true) if (double.IsNaN(val) == false) { tableRes.Rows.Add(new object[] { r[@"ID"] //ID_PUT , idSession //ID_SESSION - значение будет изменено при обработке таблицы , quality //QUALITY , val //VALUE //, r[@"AVG"] //AVG , DateTime.MinValue //WR_DATETIME - значение будет изменено при обработке таблицы , -1 //EXTENDED_DEFINITION }); } else { ; } } } catch (Exception e) { Logging.Logg().Exception(e , string.Format(@"ImpExpPrevVersionValues::importInValues () - обработка значения для nAlg=", nAlg) , Logging.INDEX_MESSAGE.NOT_SET); } } conn.Close(); } } else { // отказ пользователя от загрузки значений (файл не был выбран) err = 1; } } } catch (Exception e) { err = -1; // неизвестная(общая) ошибка - смотреть лог-файл Logging.Logg().Exception(e, @"ImpExpPrevVersionValues::importInValues () - ...", Logging.INDEX_MESSAGE.NOT_SET); } return(tableRes == null ? new DataTable() : tableRes); }
private Errors saveCSVValues(int indx, object pbr_number) { Errors errRes = Errors.NoSet; RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; int hour = -1; double val = -1F; CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE; if (pbr_number is string) { typeValues = CONN_SETT_TYPE.PBR; } else if (pbr_number is CONN_SETT_TYPE) { typeValues = (CONN_SETT_TYPE)pbr_number; //ADMIN } else { ; } if ((typeValues == CONN_SETT_TYPE.PBR) || (typeValues == CONN_SETT_TYPE.ADMIN)) { //Получить значения для сохранения DataRow [] rowsTECComponent = m_tableValuesResponse.Select(@"GTP_ID='" + allTECComponents[indx].name_future + @"'"); //Проверить наличие записей для ГТП if (rowsTECComponent.Length > 0) { foreach (DataRow r in rowsTECComponent) { hour = int.Parse(r[@"SESSION_INTERVAL"].ToString()); try { switch (typeValues) { case CONN_SETT_TYPE.PBR: HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr); HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin); HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax); curRDGValues[hour].pbr_number = pbr_number as string; ////Отладка //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number); break; case CONN_SETT_TYPE.ADMIN: HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation); curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1; HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation); curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")"); errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { break; } else { ; } } if (errRes == Errors.NoSet) { //Очистить тек./массив с данными ClearValues(); //Копировать полученные значения в "текущий массив" curRDGValues.CopyTo(m_curRDGValues, 0); indxTECComponents = indx; errRes = SaveChanges() //Errors.NoSet //Errors.NoError ; } else { ; //errRes = Errors.ParseError; } } else { errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { //Пропустить запись ГТП, разрешить переход к следующей //Псевдо-закончена обработка всех событий completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS); } else { ; } } else { ; } return(errRes); }
private Errors saveCSVValues(int indx, object pbr_number) { Errors errRes = Errors.NoSet; RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; int hour = -1; double val = -1F; string name_future = string.Empty; List <DataRow> rowsTECComponent = null; CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE; if (pbr_number is string) { typeValues = CONN_SETT_TYPE.PBR; } else if (pbr_number is CONN_SETT_TYPE) { typeValues = (CONN_SETT_TYPE)pbr_number; //ADMIN } else { ; } // проверить был ли определен тип сохраняемых значений // и имеет ли таблица соответствующую типу значений структуру (присутствуют ли в таблице необходимые поля) if (((typeValues == CONN_SETT_TYPE.PBR) || (typeValues == CONN_SETT_TYPE.ADMIN)) && (CheckNameFieldsOfTable(m_tableValuesResponse , typeValues == CONN_SETT_TYPE.PBR ? new string [] { @"GTP_ID", @"SESSION_INTERVAL", @"REC", @"IS_PER", @"DIVIAT", @"FC" } : typeValues == CONN_SETT_TYPE.ADMIN ? new string [] { @"GTP_ID", @"SESSION_INTERVAL", @"REC", @"IS_PER", @"DIVIAT", @"FC" } : new string [] { @"GTP_ID", @"SESSION_INTERVAL" }) == true)) { //Получить значения для сохранени name_future = allTECComponents[indx].name_future; rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'")); //Вариант №2 - тестовый //foreach (DataRow r in m_tableValuesResponse.Rows) // if (name_future.Equals(r["GTP_ID"]) == true) // rowsTECComponent.Add(r); // else // ; //Проверить наличие записей для ГТП if (rowsTECComponent.Count > 0) { //!!! должно быть 24 записи (обеспечивается дополнением при загрузке) if (rowsTECComponent.Count < 24) { Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..." , name_future, rowsTECComponent.Count) , Logging.INDEX_MESSAGE.NOT_SET); } else { ; } foreach (DataRow r in rowsTECComponent) { hour = int.Parse(r[@"SESSION_INTERVAL"].ToString()); try { switch (typeValues) { case CONN_SETT_TYPE.PBR: HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr); HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin); HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax); curRDGValues[hour].pbr_number = pbr_number as string; ////Отладка //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number); break; case CONN_SETT_TYPE.ADMIN: HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation); curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1; HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation); curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")" , Logging.INDEX_MESSAGE.NOT_SET); errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { break; } else { ; } } if (errRes == Errors.NoSet) { //Очистить тек./массив с данными ClearValues(); //Копировать полученные значения в "текущий массив" curRDGValues.CopyTo(m_curRDGValues, 0); indxTECComponents = indx; errRes = SaveChanges() //Errors.NoSet //Errors.NoError ; } else { ; //errRes = Errors.ParseError; } } else { errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { //Пропустить запись ГТП, разрешить переход к следующей //Псевдо-закончена обработка всех событий completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS); } else { ; } } else { ; } return(errRes); }