예제 #1
0
        /// <summary>
        /// Выборочное запрос элементов.
        /// </summary>
        public Collection <ItemSqlSimple> GetItemsShortByDataNames(Collection <string> dataNames)
        {
            Collection <ItemSqlSimple> items = new Collection <ItemSqlSimple>();

            // Задание нулевой записи с времененем последнего обновления цикла.
            ItemSqlSimple sqlItem = new ItemSqlSimple();

            sqlItem.SqlTime = ItemUpdateTime;
            items.Add(sqlItem);

            // Дублированная запись
            //items[0].SqlTime = ItemUpdateTime;

            // Передача записей по имени.
            foreach (string dataName in dataNames)
            {
                ItemSqlSimple item = new ItemSqlSimple();

                if (ItemSqlDict.ContainsKey(dataName))
                {
                    item = ItemSqlDict[dataName].GetItemSimple();
                }

                items.Add(item);
            }
            ReadItemShortCount++;

            return(items);
        }
예제 #2
0
        void ThreadMain_WorkChanged(object sender, EventArgs e)
        {
            SqlConnection connection = new SqlConnection(ConnectionString);

            try
            {
                connection.Open();

                SqlCommand command = new SqlCommand(string.Format("SELECT DataName, Trend, Description, Unit, FormatValue, MinValue, MaxValue, DataType, DataValue, Quality, SqlTime, DeviceTime, TimeOut, Comment FROM {0}",
                                                                  ValuesCurrentTableName),
                                                    connection);

                SqlDataReader reader = command.ExecuteReader();

                int i = 0;
                while (reader.Read())
                {
                    ItemSql item = new ItemSql();
                    item.DataName    = reader.GetString(0).TrimEnd();
                    item.Trend       = reader.GetBoolean(1);
                    item.Description = reader.GetString(2).TrimEnd();
                    item.Unit        = reader.GetString(3).TrimEnd();
                    item.FormatValue = reader.GetString(4).TrimEnd();
                    item.MinValue    = reader.GetDouble(5);
                    item.MaxValue    = reader.GetDouble(6);
                    item.DataType    = (short)reader.GetByte(7);
                    item.DataValue   = reader.GetDouble(8);
                    item.Quality     = (short)reader.GetInt32(9);
                    item.SqlTime     = reader.GetDateTime(10);
                    item.DeviceTime  = reader.GetDateTime(11);
                    item.TimeOut     = reader.GetInt32(12);
                    item.Comment     = reader.GetString(13).TrimEnd();

                    if (!ItemsInited)
                    {
                        ItemSqls.Add(item);
                        ItemSqlDict.Add(item.DataName, item);
                        ItemSqlShorts.Add(item.GetItemSimple());
                    }
                    else
                    {
                        ItemSqls[i] = item;
                        if (ItemSqlDict.ContainsKey(item.DataName))
                        {
                            ItemSqlDict[item.DataName] = item;
                        }
                        ItemSqlShorts[i] = item.GetItemSimple();
                    }
                    i++;
                }

                if (!ItemsInited)
                {
                    ItemsInited = true;
                }

                ItemUpdateTime = DateTime.Now;
            }
            catch
            {
                ItemsInited = false;
                ItemSqls.Clear();
                ItemSqlDict.Clear();
                ItemSqlShorts.Clear();
            }
            finally
            {
                connection.Close();
            }
        }