public static void AddHeaderInformation(XmlDocument xmlDoc, QMaker qMaker) { StringBuilder sbH = new StringBuilder(); StringWriter tempWriterH = new StringWriter(sbH); XmlTextWriter writerH = new XmlTextWriter(tempWriterH); writerH.WriteStartElement("Headers"); foreach (QField gField in qMaker.Groups) { writerH.WriteStartElement("Header"); writerH.WriteAttributeString("Name", gField.Name); writerH.WriteAttributeString("Description", gField.FriendlyName); writerH.WriteEndElement();//Header } foreach (QField fField in qMaker.Fields) { writerH.WriteStartElement("Header"); writerH.WriteAttributeString("Name", fField.Name); writerH.WriteAttributeString("Description", fField.FriendlyName); writerH.WriteEndElement();//Header } writerH.WriteEndElement();//Headers writerH.Flush(); XmlDocumentFragment xmlHeaders = xmlDoc.CreateDocumentFragment(); xmlHeaders.InnerXml = sbH.ToString(); xmlDoc.SelectSingleNode("Report").AppendChild(xmlHeaders); }
public IBNReportTemplate(QMaker maker, SortCollection coll, string Name, string ObjectName, string ViewType, string Author, DateTime Created) : this(maker,coll) { this.Name = Name; this.ObjectName = ObjectName; this.Author = Author; this.ViewType = ViewType; this.Created = Created; }
public IBNReportTemplate(QMaker maker, SortCollection coll) { if(maker!=null) { foreach(Mediachase.SQLQueryCreator.QField field in maker.Fields) { this.Fields.Add(new FieldInfo(field.Name,field.DataType.ToString())); } // foreach(Mediachase.SQLQueryCreator.FilterCondition filter in maker.Filters) // { // FilterInfo info = new FilterInfo(filter.OwnerField.Name,filter.OwnerField.DataType.ToString()); // // this.Filters.Add(info); // } foreach(Mediachase.SQLQueryCreator.QField group in maker.Groups) { this.Groups.Add(new FieldInfo(group.Name,group.DataType.ToString())); } } if(coll!=null) { foreach(SortInfo info in coll) { this.Sorting.Add(info); } } }
public IBNReportTemplate(QMaker maker) : this(maker,null) { }
public static XmlDocument GetIncidentXMLReport(IBNReportTemplate repTemp, string _lang, string _timeoffset) { QIncident objI = new QIncident(); QMaker qMaker = new QMaker(objI); qMaker.Language = _lang; qMaker.TimeOffset = _timeoffset; #region Fields foreach (FieldInfo fi in repTemp.Fields) { qMaker.Fields.Add(objI.Fields[fi.Name]); } #endregion #region GroupFields foreach (FieldInfo fi1 in repTemp.Groups) { qMaker.Groups.Add(objI.Fields[fi1.Name]); } #endregion #region Filters bool PrjFilterExist = false; foreach (FilterInfo fti in repTemp.Filters) { if (fti.FieldName == "IncProjectId") PrjFilterExist = true; QField qField = objI.Fields[fti.FieldName]; QDictionary qDic = objI.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(objI.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(objI.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Equal)); break; case "1": qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Great)); break; case "2": qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields[fti.FieldName], fti.Values[1].ToString(), SimpleFilterType.Less)); break; case "3": qMaker.Filters.Add(new IntervalFilterCondition(objI.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(objI.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(objI.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(objI.Fields[fti.FieldName], "CONVERT(datetime,'" + DateTime.Parse(fti.Values[1]).ToString("yyyy-MM-dd") + "', 120)", SimpleFilterType.GreatOrEqual)); } else { qMaker.Filters.Add(new IntervalFilterCondition(objI.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(objI.Fields[fti.FieldName], GetApString(fti.Values[0]), SimpleFilterType.Like)); } break; } } } if (!PrjFilterExist && !(Security.IsUserInGroup(InternalSecureGroups.PowerProjectManager) || Security.IsUserInGroup(InternalSecureGroups.ExecutiveManager))) { ArrayList alPrj = new ArrayList(); using (IDataReader reader = Project.GetListProjects()) { while (reader.Read()) alPrj.Add(((int)reader["ProjectId"]).ToString()); } alPrj.Add("NULL"); string[] _str = new string[alPrj.Count]; int i = 0; foreach (string s in alPrj) _str[i++] = s; qMaker.Filters.Add(new SimpleFilterCondition(objI.Fields["IncProjectId"], _str, SimpleFilterType.Equal)); } #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; }
public static XmlDocument GetDocumentXMLReport(IBNReportTemplate repTemp, string _lang, string _timeoffset) { QDocument objD = new QDocument(); 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 if (!Security.IsUserInGroup(InternalSecureGroups.PowerProjectManager) && !Security.IsUserInGroup(InternalSecureGroups.ExecutiveManager)) { qMaker.PrevSqlQuery.Add(String.Format("DECLARE @DocumentIdTable TABLE(Id INT) " + "INSERT INTO @DocumentIdTable " + "SELECT DISTINCT TD.DocumentId As Id FROM DOCUMENTS AS TD " + "WHERE TD.DocumentId IN (SELECT DocumentId FROM DOCUMENT_SECURITY_ALL WHERE PrincipalId = {0} AND (IsManager = 1 OR IsResource = 1)) " + " OR (TD.ProjectId IN (SELECT ProjectId FROM PROJECT_SECURITY_ALL WHERE PrincipalId = {0} AND (IsTeamMember = 1 OR IsSponsor = 1 OR IsStakeHolder = 1 OR IsManager = 1 OR IsExecutiveManager = 1)))", Security.CurrentUser.UserID)); qMaker.Filters.Add(new SimpleFilterCondition(qMaker.OwnerObject.Fields["DocId"], "(SELECT Id FROM @DocumentIdTable)", SimpleFilterType.In)); } 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; }
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; }
public string Create() { StringBuilder strBuilder = new StringBuilder(); if(this.OwnerObject.GetExtensions()!=null&&_AddExObjects) { _KeyUniquePrefix = this.OwnerObject.OwnerTable; } ArrayList arrayExObjectList = new ArrayList(); // Step 1. Create Common SQL Query [4/29/2004] CreateSQLQueryList(); if(this.OwnerObject.GetExtensions()!=null&&_AddExObjects) { foreach(QObject exObject in this.OwnerObject.GetExtensions()) { QMaker exMaker = new QMaker(exObject, this.OwnerObject.OwnerTable,exObject.OwnerTable); // 2006-12-12: Fix Language Problem exMaker.Language = this.Language; foreach(QField exField in this.Fields) { exMaker.Fields.Add(exObject.Fields[exField.Name]); } foreach(QField exGroup in this.Groups) { exMaker.Groups.Add(exObject.Fields[exGroup.Name]); } foreach(FilterCondition exFilter in this.Filters) { if(exFilter is SimpleFilterCondition) { SimpleFilterCondition tmpFilter = (SimpleFilterCondition)exFilter; SimpleFilterCondition newFilter = new SimpleFilterCondition(exObject.Fields[tmpFilter.OwnerField.Name],"", tmpFilter.FilterType); newFilter.InternalValue = tmpFilter.InternalValue; if(tmpFilter.OwnerField.DBName!=null) { int iIndexOfKey = newFilter.InternalValue.IndexOf("@"+tmpFilter.OwnerField.DBName); if(iIndexOfKey!=-1) { newFilter.InternalValue = newFilter.InternalValue.Replace("@"+tmpFilter.OwnerField.DBName,"@"+newFilter.OwnerField.DBName); } } exMaker.Filters.Add(newFilter); } else if(exFilter is IntervalFilterCondition) { IntervalFilterCondition tmpFilter = (IntervalFilterCondition)exFilter; IntervalFilterCondition newFilter = new IntervalFilterCondition(exObject.Fields[tmpFilter.OwnerField.Name],tmpFilter.ValueLess, tmpFilter.ValueGreat); exMaker.Filters.Add(newFilter); } else if(exFilter is ExtendedFilterCondition) { ExtendedFilterCondition tmpFilter = (ExtendedFilterCondition)exFilter; ExtendedFilterCondition newFilter = new ExtendedFilterCondition(tmpFilter.Query, tmpFilter.Value); exMaker.Filters.Add(newFilter); } } arrayExObjectList.Add(exMaker); // ArrayList addonQuery = exMaker.CreateSQLQueryList(); // // for(int iIndex=1;iIndex<addonQuery.Count;iIndex++) // { // QSqlSelectList.Add(addonQuery[iIndex]); // } } } // Add prev SQL Commands [5/7/2004] foreach(string PrevCommand in this.PrevSqlQuery) { strBuilder.Append(PrevCommand); strBuilder.Append("\r\n"); } // Create SQL Command bool bRunFirst = true; foreach(QSqlSelectMaker sqlMaker in QSqlSelectList) { if(bRunFirst) bRunFirst = false; else //strBuilder.Append("\r\nUNION ALL\r\n"); strBuilder.Append("\r\nUNION\r\n"); strBuilder.Append( sqlMaker.Create(this.OwnerObject.OwnerTable,this.Groups)); } foreach(QMaker exMaker in arrayExObjectList) { ArrayList addonQuery = exMaker.CreateSQLQueryList(); for(int iIndex=1;iIndex<addonQuery.Count;iIndex++) { if(bRunFirst) bRunFirst = false; else //strBuilder.Append("\r\nUNION ALL\r\n"); strBuilder.Append("\r\nUNION\r\n"); strBuilder.Append( ((QSqlSelectMaker)addonQuery[iIndex]).Create(exMaker.OwnerObject.OwnerTable,this.Groups)); } } // Add order By Command [4/20/2004] if(OrderByFields.Count>0) { strBuilder.Append("\r\nORDER BY"); bRunFirst = true; foreach(string OrderAlias in OrderByFields) { if(bRunFirst) { bRunFirst = false; strBuilder.Append(" "); } else strBuilder.Append(" , "); strBuilder.Append(OrderAlias); } } // Final step [4/20/2004] strBuilder.Append("\r\nFOR XML EXPLICIT"); #if DEBUG System.Diagnostics.Trace.WriteLine(strBuilder.ToString()); #endif return strBuilder.ToString(); }
public string Create() { StringBuilder strBuilder = new StringBuilder(); if (this.OwnerObject.GetExtensions() != null && _AddExObjects) { _KeyUniquePrefix = this.OwnerObject.OwnerTable; } ArrayList arrayExObjectList = new ArrayList(); // Step 1. Create Common SQL Query [4/29/2004] CreateSQLQueryList(); if (this.OwnerObject.GetExtensions() != null && _AddExObjects) { foreach (QObject exObject in this.OwnerObject.GetExtensions()) { QMaker exMaker = new QMaker(exObject, this.OwnerObject.OwnerTable, exObject.OwnerTable); // 2006-12-12: Fix Language Problem exMaker.Language = this.Language; foreach (QField exField in this.Fields) { exMaker.Fields.Add(exObject.Fields[exField.Name]); } foreach (QField exGroup in this.Groups) { exMaker.Groups.Add(exObject.Fields[exGroup.Name]); } foreach (FilterCondition exFilter in this.Filters) { if (exFilter is SimpleFilterCondition) { SimpleFilterCondition tmpFilter = (SimpleFilterCondition)exFilter; SimpleFilterCondition newFilter = new SimpleFilterCondition(exObject.Fields[tmpFilter.OwnerField.Name], "", tmpFilter.FilterType); newFilter.InternalValue = tmpFilter.InternalValue; if (tmpFilter.OwnerField.DBName != null) { int iIndexOfKey = newFilter.InternalValue.IndexOf("@" + tmpFilter.OwnerField.DBName); if (iIndexOfKey != -1) { newFilter.InternalValue = newFilter.InternalValue.Replace("@" + tmpFilter.OwnerField.DBName, "@" + newFilter.OwnerField.DBName); } } exMaker.Filters.Add(newFilter); } else if (exFilter is IntervalFilterCondition) { IntervalFilterCondition tmpFilter = (IntervalFilterCondition)exFilter; IntervalFilterCondition newFilter = new IntervalFilterCondition(exObject.Fields[tmpFilter.OwnerField.Name], tmpFilter.ValueLess, tmpFilter.ValueGreat); exMaker.Filters.Add(newFilter); } else if (exFilter is ExtendedFilterCondition) { ExtendedFilterCondition tmpFilter = (ExtendedFilterCondition)exFilter; ExtendedFilterCondition newFilter = new ExtendedFilterCondition(tmpFilter.Query, tmpFilter.Value); exMaker.Filters.Add(newFilter); } } arrayExObjectList.Add(exMaker); // ArrayList addonQuery = exMaker.CreateSQLQueryList(); // // for(int iIndex=1;iIndex<addonQuery.Count;iIndex++) // { // QSqlSelectList.Add(addonQuery[iIndex]); // } } } // Add prev SQL Commands [5/7/2004] foreach (string PrevCommand in this.PrevSqlQuery) { strBuilder.Append(PrevCommand); strBuilder.Append("\r\n"); } // Create SQL Command bool bRunFirst = true; foreach (QSqlSelectMaker sqlMaker in QSqlSelectList) { if (bRunFirst) { bRunFirst = false; } else { //strBuilder.Append("\r\nUNION ALL\r\n"); strBuilder.Append("\r\nUNION\r\n"); } strBuilder.Append(sqlMaker.Create(this.OwnerObject.OwnerTable, this.Groups)); } foreach (QMaker exMaker in arrayExObjectList) { ArrayList addonQuery = exMaker.CreateSQLQueryList(); for (int iIndex = 1; iIndex < addonQuery.Count; iIndex++) { if (bRunFirst) { bRunFirst = false; } else { //strBuilder.Append("\r\nUNION ALL\r\n"); strBuilder.Append("\r\nUNION\r\n"); } strBuilder.Append(((QSqlSelectMaker)addonQuery[iIndex]).Create(exMaker.OwnerObject.OwnerTable, this.Groups)); } } // Add order By Command [4/20/2004] if (OrderByFields.Count > 0) { strBuilder.Append("\r\nORDER BY"); bRunFirst = true; foreach (string OrderAlias in OrderByFields) { if (bRunFirst) { bRunFirst = false; strBuilder.Append(" "); } else { strBuilder.Append(" , "); } strBuilder.Append(OrderAlias); } } // Final step [4/20/2004] strBuilder.Append("\r\nFOR XML EXPLICIT"); #if DEBUG System.Diagnostics.Trace.WriteLine(strBuilder.ToString()); #endif return(strBuilder.ToString()); }