/// <summary>
        /// полное имя
        /// </summary>
        /// <param name="st">Схема SQL</param>
        /// <param name="ColumnName">Имя колонки</param>
        /// <returns>Полное имя</returns>
        public string GetFullName(SQLStruct st, string ColumnName)
		{
            for (int i=0;i<st.select.Count;i++)
            {
				if (st.select.isString(i))
				{
					//Если мы нашли совпадение, то...
					if (st.select[i] == ColumnName)
					{
						st.select.SetUsedInChild(i);
                        return st.GetSQLUniqueName() + "_select_" + ColumnName;
					}
				}
            }
			//После чего должны обратиться к предку.
			if (st.parentSQL != null)
			{
				return GetFullName(st.parentSQL, ColumnName);
			}
            return null;
		}
Example #2
0
		/// <summary>
		/// Пишет SELECT
		/// </summary>
		/// <param name="select">SELECT-класс</param>
		/// <param name="sql">SQL - схема</param>
		private void WriteSelect(SelectClass select, SQLStruct sql)
		{
			//Пишем условие, если у нас стоит тэг ONCE - одна запись
			for (int i=0;i< select.Count; i++)
			{
				if (select.isString(i))
				{
					string node = select[i];
					if (select.isKey(node))
						continue;
					string tablename = select.Table(i);//sql.GetTableName(select[i]);
					
					string val = "$var_"+ tablename + "/" +  select[i];
					

					if (sql.alias.GetColumnAlias(node) != null)
					{
						string Col = "$var_"+ tablename + "/" + sql.alias.GetColumnAlias(node).name;
						//string var_new = "$var_"+ tablename + "/" +  select[i];
						tw.WriteLine("<" + node + "><xsl:value-of select=\"" + Col + "\"/></" + node + ">");
					}else
					{
						tw.WriteLine("<" + node + "><xsl:value-of select=\"" + val + "\"/></" + node + ">");
					}

					if (select.IsUsedInChild(i))
					{
						string Col = val;
						if (sql.alias.GetColumnAlias(node) != null)
							Col = "$var_"+ tablename + "/" + sql.alias.GetColumnAlias(node).name;

						tw.WriteLine("<xsl:variable name=\"" + sql.GetSQLUniqueName() +"_select_" + node +"\" select=\"" + Col + "\"/>");
					}
				}
				else
				{
					WriteXSL(select.GetSQL(i), sql.group.Count);
				}
			}
			/*if (select.selectType == SELECTTYPE.ONCE)
				tw.WriteLine("</xsl:if>");*/
		}