private DataView ReadHistory(ReportType reportType, StringBuilder filter, DateTime startTime, DateTime endTime)
{
DateTime earlyTime = startTime;
DateTime lateTime = endTime;
if (endTime < startTime && endTime != DateTime.MinValue)
{
earlyTime = endTime;
lateTime = startTime;
}
if (earlyTime != DateTime.MinValue)
{
if (filter.Length > 0)
{
filter.Append(" AND ");
}
filter.Append('(');
filter.Append(Opc.Ua.BrowseNames.Time);
filter.Append(">=");
filter.Append('#');
filter.Append(earlyTime);
filter.Append('#');
filter.Append(')');
}
if (lateTime != DateTime.MinValue)
{
if (filter.Length > 0)
{
filter.Append(" AND ");
}
filter.Append('(');
filter.Append(Opc.Ua.BrowseNames.Time);
filter.Append('<');
filter.Append('#');
filter.Append(lateTime);
filter.Append('#');
filter.Append(')');
}
DataView view = new DataView(
m_dataset.Tables[(int)reportType],
filter.ToString(),
Opc.Ua.BrowseNames.Time,
DataViewRowState.CurrentRows);
return view;
}