/// <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 + ">"); } } } }
/// <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 + ">"); } } } }