public static XmlDocument GetUsersXMLReport(IBNReportTemplate repTemp, string _lang, string _timeoffset) { QDirectory objD = new QDirectory(); QMaker qMaker = new QMaker(objD); qMaker.Language = _lang; qMaker.TimeOffset = _timeoffset; #region Fields foreach (FieldInfo fi in repTemp.Fields) { qMaker.Fields.Add(objD.Fields[fi.Name]); } #endregion #region GroupFields foreach (FieldInfo fi1 in repTemp.Groups) { qMaker.Groups.Add(objD.Fields[fi1.Name]); } #endregion #region Filters foreach (FilterInfo fti in repTemp.Filters) { QField qField = objD.Fields[fti.FieldName]; QDictionary qDic = objD.GetDictionary(qField); if (qDic != null) { if (fti.Values.Count > 0) { string[] _str = new string[fti.Values.Count]; int i = 0; foreach (string s in fti.Values) _str[i++] = s; qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[qDic.FieldId.Name], _str, SimpleFilterType.Equal)); } } else { switch (qField.DataType) { case DbType.Decimal: case DbType.Int32: case DbType.Time: if (fti.Values.Count > 0) { switch (fti.Values[0]) { case "0": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Equal)); break; case "1": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Great)); break; case "2": qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Less)); break; case "3": qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], fti.Values[1].ToString(), fti.Values[2].ToString())); break; } } break; case DbType.DateTime: case DbType.Date: if (fti.Values.Count > 0) { DateTime _Start = DateTime.MinValue; DateTime _Finish = DateTime.MaxValue; string sVal = fti.Values[0]; SetDates(sVal, out _Start, out _Finish); if (sVal != "9") { qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + _Start.ToString("yyyy-MM-dd") + "',120)", "CONVERT(datetime,'" + _Finish.ToString("yyyy-MM-dd") + "',120)")); } else if (DateTime.Parse(fti.Values[1]) == DateTime.MinValue) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "',120)", SimpleFilterType.LessOrEqual)); } else if (DateTime.Parse(fti.Values[2]) >= DateTime.MaxValue.Date) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "',120)", SimpleFilterType.GreatOrEqual)); } else { qMaker.Filters.Add(new IntervalFilterCondition(objD.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "',120)", "CONVERT(datetime,'" + DateTime.Parse(fti.Values[2]).ToString("yyyy-MM-dd") + "',120)")); } } break; case DbType.String: if (fti.Values.Count > 0) { qMaker.Filters.Add(new SimpleFilterCondition(objD.Fields[fti.FieldName], GetApString(fti.Values[0]), SimpleFilterType.Like)); } break; } } } #endregion string sql = qMaker.Create(); XmlDocument doc = DBReport.GetXMLReport(sql); QMetaLoader.AddHeaderInformation(doc, qMaker); //QMetaLoader.AddSortInformation(doc, repTemp); //QMetaLoader.AddFilterInformation(doc, repTemp); AddTemplateInfo(doc, repTemp); ProcessResourceValues(doc); return doc; }