/// <summary>
        /// Добавляет агрегат
        /// </summary>
        /// <param name="value">Имя функции</param>
        /// <param name="t">Тип группировки</param>
		public void AddFunc(string value, TypeFH t)
		{
			ValueGroup g;
			if (t == TypeFH.HEADER)
				g = (ValueGroup) arrayH[arrayH.Count - 1];
			else
				g = (ValueGroup) arrayF[arrayF.Count - 1];
            //ValueGroup g = (ValueGroup) array[array.Count-1];
            g.Func = value;
		}
        /// <summary>
        /// Получает имя колонки по номеру колонки и типу группировки
        /// </summary>
        /// <param name="i">Номер колонки</param>
        /// <param name="t">Тип круппировки</param>
        /// <returns>Имя колонки</returns>
		public string ValueRec(int i, TypeFH t)
		{
			ValueGroup g;
			if (t == TypeFH.HEADER)
				g = (ValueGroup) arrayH[i];
			else
				g = (ValueGroup) arrayF[i];

			return g.ColumnName;
		}
        /// <summary>
        /// Получает полное имя с таблице <see cref="ValueGroup"/>
        /// </summary>
        /// <param name="i">Имя группировки</param>
        /// <param name="t">Тип группировки</param>
        /// <returns></returns>
		public string FullName(int i, TypeFH t)
		{
			//ValueGroup g = (ValueGroup) array[i];
			ValueGroup g;
			if (t == TypeFH.HEADER)
				g = (ValueGroup) arrayH[i];
			else
				g = (ValueGroup) arrayF[i];

			return g.FullName;
		}
        /// <summary>
        /// Получает номер из <see cref="ValueGroup"/>
        /// </summary>
        /// <param name="i">Номер группировки</param>
        /// <param name="t">Тип группировки</param>
        /// <returns>Номер</returns>
		public int IdGroup(int i, TypeFH t)
		{
			ValueGroup g;
			if (t == TypeFH.HEADER)
				g = (ValueGroup) arrayH[i];
			else
				g = (ValueGroup) arrayF[i];

			return g.idGroup;
		}
        /// <summary>
        /// Получает функцию по номеру колонки и типу группировки
        /// </summary>
        /// <param name="i">Номер группировки</param>
        /// <param name="t">Тип группировки</param>
        /// <returns>Имя функции</returns>
		public string Func(int i, TypeFH t)
		{
			ValueGroup g;
			if (t == TypeFH.HEADER)
				g = (ValueGroup) arrayH[i];
			else
				g = (ValueGroup) arrayF[i];

			return g.Func;
		}
        /// <summary>
        /// Получает имя тэга по типу (Header, footer)
        /// </summary>
        /// <param name="t">Тип получаемого тэаг</param>
        /// <returns></returns>
		public string UseTag(TypeFH t)
		{
			if (t == TypeFH.FOOTER)
				return UseTagF;
			else 
				//Header и для Contain
				return UseTagH;
		}
Esempio n. 7
0
        /// <summary>
        /// Пишет записи (данные) в Group 
        /// Если при этом указана агрегатная функция, то она тоже пищется
        /// </summary>
        /// <param name="sql">SQL -схема 1 группировки</param>
        /// <param name="all">Флаг ALL</param>
        /// <param name="from">Параметр откуда будут браться данные</param>
        /// <param name="VarGroupName">Имя переменной (group_) из которой группируются данные</param>
        /// <param name="TrName">Имя узла xsl:value-of select="$" + VarGroupName + "/" + TrName </param>
        /// <param name="t">Тип группировки</param>
		public void GroupValueRec(GroupClassOnce sql, bool all, string from, string VarGroupName, string TrName, TypeFH t)
		{
			int CountValueRec = 0;
			if (t == TypeFH.FOOTER)
				CountValueRec = sql.CountValueRecFooter;
			else
				CountValueRec = sql.CountValueRecHeader;
						
			//Пишем все агрегаты...
			for (int j=0;j< CountValueRec;j++)
			{
				string defTemplate = "#.##";
				//string node = (string) sql.group[idGroup].array[j];
				string node = sql.ValueRec(j,t);
				string node_value = node;
				string func = sql.Func(j,t);
				string fullName = sql.FullName(j,t);

				/*if (sql.FullName!= null && sql.FullName != "")
					node_value = fullName;*/
				
				//tw.WriteLine("<" + node + "><xsl:value-of select=\"" + func + "(current()/" + node + ")\"/></" + node + ">");
				if (all)
					if (fullName!= null && fullName != "")
					{
						if (func != null && func != "")
							tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "($"+ fullName + "),'" + defTemplate + "')\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" + fullName + "\"/></" + node + ">");
					}
					else
					{
						if (func != null && func != "")
							tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "("+ from + "/" + TrName + "" + node_value + "),'" + defTemplate + "')\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"" + from + "/" + TrName + "" + node_value + "\"/></" + node + ">");
					}
				else
				{
					if (fullName!= null && fullName != "")
					{
						if (func!=null && func != "")
							tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "($" + fullName + "),'" + defTemplate + "')\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" +  fullName + "\"/></" + node + ">");
					}
					else
					{
						if (func!=null && func != "")
							tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "(current-group()/" + node_value + "),'" + defTemplate + "')\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" + VarGroupName + "_key_" + node + "\"/></" + node + ">");
					}
				}
			}
		}
Esempio n. 8
0
        /// <summary>
        /// Пишет записи (данные) в Group 
        /// Если при этом указана агрегатная функция, то она тоже пищется
        /// </summary>
        /// <param name="sql">SQL -схема 1 группировки</param>
        /// <param name="all">Флаг ALL</param>
        /// <param name="VarGroupName">Имя переменной (group_) из которой группируются данные</param>
        /// <param name="TrName">Имя узла xsl:value-of select="$" + VarGroupName + "/" + TrName </param>
        /// <param name="t">Тип группировки</param>
		public void GroupValueRec2(GroupClassOnce sql, bool all, string VarGroupName, string TrName, TypeFH t)
		{
						
			//Пишем все агрегаты...
			int CountValueRec = 0;
			if (t == TypeFH.FOOTER)
				CountValueRec = sql.CountValueRecFooter;
			else
				CountValueRec = sql.CountValueRecHeader;

			for (int j=0;j< CountValueRec;j++)
			{
				string defTemplate = "#.##";
				//string node = (string) sql.group[idGroup].array[j];
				string node = sql.ValueRec(j, t);
				string node_value = node;
				string func = sql.Func(j, t);
				string fullName = sql.FullName(j, t);
				if ((fullName == null || fullName == "") && !all)
				{
					//Провереям надохится ли в текущем гроупе все колонки
					int idGroup = sql.IdGroup(j,t);
					if (idGroup!=-1)
					{
                        fullName = "group_" + idGroup.ToString() + "_key_" + node;
					}
				}
				
				if (all)
					if (fullName!= null && fullName != "")
					{
						if (func != null && func != "")
							tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "($"+ fullName + "),'" + defTemplate + "')\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" + fullName + "\"/></" + node + ">");
					}
					else
					{
						if (func != null && func != "")
							tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "($"+ VarGroupName + "/" + TrName + "" + node_value + "),'" + defTemplate + "')\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" + VarGroupName + "/" + TrName + "" + node_value + "\"/></" + node + ">");
						//int uu=0;
					}
				else
				{
					if (fullName!= null && fullName != "")
					{
						if (func!=null && func != "")
                            if (func.ToLower() !="val")
							    tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "($" + fullName + "),'" + defTemplate + "')\"/></" + node + ">");
                            else
                                tw.WriteLine("<" + node + "><xsl:value-of select=\"$" + fullName + "\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" +  fullName + "\"/></" + node + ">");
					}
					else
					{
						if (func!=null && func != "")
                            if (func.ToLower() != "val")
							    tw.WriteLine("<" + node + "><xsl:value-of select=\"format-number(" + func + "(current-group()/" + node_value + "),'" + defTemplate + "')\"/></" + node + ">");
                            else
                                tw.WriteLine("<" + node + "><xsl:value-of select=\"current-group()/" + node_value + "\"/></" + node + ">");
						else
							tw.WriteLine("<" + node + "><xsl:value-of select=\"$" + VarGroupName + "_key_" + node + "\"/></" + node + ">");
					}
				}
			}
		}