private string GetTimeWhere(DataCriteria kv)
        {
            if (kv == null || kv.values == null || kv.values.Count == 0)
            {
                return(string.Empty);
            }

            DateTime from;
            DateTime to      = DateTime.Now;
            bool     UseFrom = DateTime.TryParseExact(kv.values[0], "yyyy-MM", CultureInfo.CurrentCulture, DateTimeStyles.None, out from);
            bool     UseTo   = kv.values.Count > 1? DateTime.TryParseExact(kv.values[1], "yyyy-MM", CultureInfo.CurrentCulture, DateTimeStyles.None, out to):false;

            if (!UseFrom && !UseTo)
            {
                return(string.Empty);
            }
            else if (!UseFrom)
            {
                return(string.Format(" and {0}", GetTimeWhereStatment(to, "<")));
            }
            else if (!UseTo)
            {
                return(string.Format(" and {0}", GetTimeWhereStatment(from, ">")));
            }
            else
            {
                return(string.Format(" and ({0} and {1})", GetTimeWhereStatment(from, ">"), GetTimeWhereStatment(to, "<")));
            }
        }
예제 #2
0
 public Options(object[] tagnames)
 {
     Criteria = new DataCriteria(tagnames);
     Criteria.IntervalMicroseconds = 60000000;
     Criteria.Start = DateTime.MinValue;
     Criteria.End   = DateTime.MinValue;
 }
예제 #3
0
        private static DataResult GetDataResult2(DataCriteria criteria)
        {
            DataResult result;

            criteria.TemporaryTimeout = 60;

            if (AppSettings.IsLoggingEnabled)
            {
                Log(criteria.ToString(), new object[0], true);
                result = FetchAll(criteria);
                Log(criteria.ToString(), new object[0], false);
            }
            else
            {
                result = FetchAll(criteria);
            }
            return(result);
        }
예제 #4
0
        public System.Data.DataSet QueryInterpolated(DateTime startTime, DateTime endTime, uint numSamples, Type queryType, params TagSpecifics[] tags)
        {
            //declare general purpose variables
            int total = 0;
            DateTime st = DateTime.Now;
            DateTime en = st;
            var ds = new System.Data.DataSet();

            //change the cursor to busy
            //Cursor = Cursors.WaitCursor;

            if (sc == null || !sc.IsConnected()) { this.Connect(); }

            //if currently connected
            if (sc.IsConnected())
            {

                var tagsForSeries = new List<string>();
                var allTags = new List<string>();
                var dependencies = new Dictionary<string, string[]>();
                var delegates = new Dictionary<string, TagSpecifics.Formula>();
                foreach (TagSpecifics tag in tags)
                {
                    tagsForSeries.Add(tag.Tagname);
                    dependencies.Add(tag.Tagname, tag.DependencyTagnames);
                    delegates.Add(tag.Tagname, tag.CalcFormula);
                    if (tag.DependencyTagnames != null && tag.DependencyTagnames.Length > 0) allTags.AddRange(tag.DependencyTagnames);
                    if (tag.DependencyTagnames == null || tag.DependencyTagnames.Length == 0) allTags.Add(tag.Tagname);
                }

                //build the query string
                DataQueryParams query;
                ItemErrors errors;
                Proficy.Historian.ClientAccess.API.DataSet set = new Proficy.Historian.ClientAccess.API.DataSet();

                if (queryType == typeof(InterpolatedQuery))
                {
                    query = new InterpolatedQuery(startTime, endTime, numSamples, allTags.ToArray<string>()) { Fields = DataFields.Time | DataFields.Value | DataFields.Quality };
                    sc.IData.Query(ref query, out set, out errors);
                    ds = AddDatasetFromHistorianDataset(tagsForSeries, dependencies, delegates, "", ref ds, set);
                }
                else if (queryType == typeof(CalculatedQuery))
                {
                    DataCriteria criteria = new DataCriteria()
                    {
                        Start = startTime,
                        End = endTime,
                        NumberOfSamples = numSamples,
                        SamplingMode = DataCriteria.SamplingModeType.Calculated,
                        CalculationMode = DataCriteria.CalculationModeType.Maximum,
                        Tagnames = new HashSet<string>(allTags)
                    };
                    query = new CalculatedQuery(DataCriteria.CalculationModeType.Maximum, allTags.ToArray<string>()) { Criteria = criteria, Fields = DataFields.Time | DataFields.Value | DataFields.Quality };
                    sc.IData.Query(ref query, out set, out errors);
                    ds = AddDatasetFromHistorianDataset(tagsForSeries, dependencies, delegates, "_MAX", ref ds, set);

                    query.Criteria.CalculationMode = DataCriteria.CalculationModeType.Average;
                    sc.IData.Query(ref query, out set, out errors);
                    ds = AddDatasetFromHistorianDataset(tagsForSeries, dependencies, delegates, "_AVG", ref ds, set);

                    query.Criteria.CalculationMode = DataCriteria.CalculationModeType.Minimum;
                    sc.IData.Query(ref query, out set, out errors);
                    ds = AddDatasetFromHistorianDataset(tagsForSeries, dependencies, delegates, "_MIN", ref ds, set);

                    query.Criteria.SamplingMode = DataCriteria.SamplingModeType.Interpolated;
                    sc.IData.Query(ref query, out set, out errors);
                    ds = AddDatasetFromHistorianDataset(tagsForSeries, dependencies, delegates, "", ref ds, set);

                    //query = null;
                }
                else if (queryType == typeof(RawByTimeQuery))
                {
                    DataCriteria criteria = new DataCriteria()
                    {
                        Start = startTime
                    };
                    query = new RawByTimeQuery(startTime, allTags.ToArray()) { Fields = DataFields.Time | DataFields.Value | DataFields.Quality };
                    sc.IData.Query(ref query, out set, out errors);
                    //ds
                }
                else
                {
                    query = null;
                    return null;
                }
                //execute the query and populate the "set" Historian Dataset

                //sum up the total of samples
                total += set.TotalSamples;

            }
            //calculate the elapsed time on the query operation and reset the cursor
            en = DateTime.Now;
            // Cursor = Cursors.Default;
            //grpRead.Text = "Read Data - " + total.ToString() + " Samples - Elapsed Time: " + en.Subtract(st).Seconds.ToString() + " Secs";
            return ds;
        }
예제 #5
0
 public Proficy.Historian.ClientAccess.API.DataSet QueryRaw(DateTime startTime, DateTime endTime, params TagSpecifics[] tags)
 {
     var ds = new System.Data.DataSet();
     DataQueryParams query;
     ItemErrors errors;
     Proficy.Historian.ClientAccess.API.DataSet set = new Proficy.Historian.ClientAccess.API.DataSet();
     var tagsForSeries = new List<string>();
     foreach (TagSpecifics tag in tags)
     {
         tagsForSeries.Add(tag.Tagname);
     }
     DataCriteria criteria = new DataCriteria()
     {
         Start=startTime,
         End = endTime,
         Tagnames= new HashSet<string>(tagsForSeries),
         SamplingMode =DataCriteria.SamplingModeType.RawByTime
     };
     query = new RawByTimeQuery(startTime, tagsForSeries.ToArray()) { Criteria=criteria, Fields = DataFields.Time | DataFields.Value | DataFields.Quality };
     sc.IData.Query(ref query, out set, out errors);
     return set;
     //ds = AddDatasetFromHistorianDataset(tagsForSeries, new Dictionary<string, string[]>(), new Dictionary<string, TagSpecifics.Formula>(), "", ref ds, set);
     //return ds;
 }
예제 #6
0
 public static DataResult RemoveRecord(DataCriteria criteria)
 {
     return(DeleteRecord(criteria));
 }
예제 #7
0
 public static DataResult InsertRecord(DataCriteria criteria)
 {
     return(CreateRecord(criteria));
 }
예제 #8
0
        private static DataResult GetDataResult2(DataCriteria criteria)
        {
            DataResult result;
            criteria.TemporaryTimeout = 60;

            if (AppSettings.IsLoggingEnabled)
            {
                Log(criteria.ToString(), new object[0], true);
                result = FetchAll(criteria);
                Log(criteria.ToString(), new object[0], false);
            }
            else
            {
                result = FetchAll(criteria);
            }
            return result;
        }
예제 #9
0
 public static DataResult RemoveRecord(DataCriteria criteria)
 {
     return DeleteRecord(criteria);
 }
예제 #10
0
 public static DataResult InsertRecord(DataCriteria criteria)
 {
     return CreateRecord(criteria);
 }
 /// <summary>
 /// Add (Append) to criteria the given key value pair
 /// </summary>
 /// <param name="key">
 /// The key, The key i.e. the concept ref of the component , the xml attribute name
 /// </param>
 /// <param name="value">
 /// The key's value
 /// </param>
 public void AddCriteria(DataCriteria Criterio)
 {
     this._criteria.Add(Criterio);
 }