Ejemplo n.º 1
0
        public SetupDialog(KLStruct klapan)
        {
            _object = klapan;
            InitializeComponent();
            model            = new SetupTableModel(klapan);
            this.DataContext = model;
            objectType       = typeof(KLStruct);
            Title            = "Настройка клапана (заслонки)";

            //      SetupBindings();
        }
Ejemplo n.º 2
0
        }//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