public SetupDialog(KLStruct klapan) { _object = klapan; InitializeComponent(); model = new SetupTableModel(klapan); this.DataContext = model; objectType = typeof(KLStruct); Title = "Настройка клапана (заслонки)"; // SetupBindings(); }
}//readvs /// <summary> /// чтение настроек клапанов /// </summary> /// <param name="conn"></param> private static void ReadKL(OleDbConnection conn) { //---------- настройки чтения ------ int skipLines = 4; //количество пропускаемых строк заголовка int nNameCol = 0; //номер столбца с именем int nDICol = 8; //номер столбца со ссылками на DI int strideDI = 2; //количество строк на однин клапан int shiftDIlink = 1000; //ссылки на DI имеют смещение на 1000 int nDOCol = 5; //номер столбца со ссылками на DO int strideDO = 2; //количество строк на однин клпан int shiftDOlink = 4000; //ссылки на DO смещаются на 4000 //наименования используемых таблиц // string tableName = "Настр. клапанов"; string DITableName = "DI клапанов"; string DOTableName = "DO клапанов"; OleDbCommand cmd = new OleDbCommand { Connection = conn }; // Get all Sheets in Excel File DataTable dtSheet = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //======================================================================= чтение таблицы DI задвижек ===================================== string sheetName = ""; foreach (DataRow dr in dtSheet.Rows) { sheetName = dr["TABLE_NAME"].ToString(); if (sheetName.Contains(DITableName)) { //LogViewModel.WriteLine("Таблица DI вспомсистем найдена, чтение данных..."); LogWriter.AppendLog("Таблица DI вспомсистем найдена, чтение данных..."); break; } } // Get all rows from the Sheet cmd.CommandText = "SELECT * FROM [" + sheetName + "]"; DataTable dataTable = new DataTable { TableName = sheetName }; OleDbDataAdapter dataAdapter = new OleDbDataAdapter(cmd); dataAdapter.Fill(dataTable); KLTableViewModel.KL.Clear(); //================= for (int i = 0; i < dataTable.Rows.Count / strideDI; i++) { int rowindex = i * strideDI + skipLines; KLStruct kl; if (dataTable.Rows[rowindex].ItemArray[nNameCol] is DBNull) //название пустое, прекращаем чтение { break; } else { kl = new KLStruct { Description = (string)dataTable.Rows[rowindex].ItemArray[0] }; if (kl.Description.Length < 2) { break; } kl.En = true; KLTableViewModel.KL.Add(kl); } for (int j = 0; j < strideDI; j++) { object param = dataTable.Rows[rowindex + j].ItemArray[nDICol]; int iParam = 0; if (param is string) { iParam = int.Parse((string)(param)); } else if (param is double) { iParam = (int)((double)param); } if (iParam == 0) { continue; } int refValue = DIStruct.FindByNsign(iParam + shiftDIlink); switch (j) { case 0: kl.OKCindxArrDI = refValue; break; //клапан открыт case 1: kl.CKCindxArrDI = refValue; break; //клапан закрыт } } } foreach (DataRow dr in dtSheet.Rows) { sheetName = dr["TABLE_NAME"].ToString(); if (sheetName.Contains(DOTableName)) { //LogViewModel.WriteLine("Таблица DO вспомсистем найдена, чтение данных..."); LogWriter.AppendLog("Таблица DO вспомсистем найдена, чтение данных..."); break; } } // Get all rows from the Sheet cmd.CommandText = "SELECT * FROM [" + sheetName + "]"; dataTable = new DataTable { TableName = sheetName }; dataAdapter.Fill(dataTable); for (int i = 0; i < KLTableViewModel.KL.Count; i++) { int rowindex = i * strideDO + skipLines; for (int j = 0; j < strideDO; j++) { object param = dataTable.Rows[rowindex + j].ItemArray[nDOCol]; int iParam = 0; if (param is string) { iParam = int.Parse((string)(param)); } else if (param is double) { iParam = (int)((double)param); } if (iParam == 0) { continue; } int refValue = DOStruct.FindByNsign(iParam + shiftDOlink); switch (j) { case 0: KLTableViewModel.KL[i].DOBindxArrDO = refValue; break; //открыть case 1: KLTableViewModel.KL[i].DKBindxArrDO = refValue; break; //закрыть } } } }//readkl