예제 #1
0
        /// <summary>
        /// Преобразование кода MSQL в SQL.
        /// </summary>
        /// <param name="MSQL"></param>
        /// <returns>Код SQL</returns>
        public static string Parse(string MSQL)
        {
            //Инициализация парсера
            if (!ParserData.IsInitial)
            {
                string     sql = ParserData.GetSQLInitial();
                var        DS  = new System.Data.DataSet();
                string     ErrorText;
                const bool ErrorShow = true;
                if (!sys.SelectDS(DirectionQuery.Remote, sql, out DS, out ErrorText, ErrorShow))
                {
                    return("");
                }
                ParserData.ParserInitialFromDS(DS);
            }
            var parser = new Parser();

            return(parser.Parse(MSQL, "Sys"));
        }
예제 #2
0
        ///Парсинг запроса.
        private string Parse(string MSQL, bool Test)
        {
            string sql;

            if (!ParserData.IsInitial)
            {
                sql = ParserData.GetSQLInitial();
                var        DS = new System.Data.DataSet();
                string     ErrorText;
                const bool ErrorShow = true;
                if (!sys.SelectDS(DirectionQuery.Remote, sql, out DS, out ErrorText, ErrorShow))
                {
                    return("");
                }
                ParserData.ParserInitialFromDS(DS);
            }

            //Для тестирования. Показываем исходные таблицы.
            if (!Test)
            {
                dgvEntity.DataSource     = ParserData.DTArEntity;
                dgvAttrParent.DataSource = ParserData.DTArAttrParent;
            }

            parser = new Parser();
            sql    = parser.ParseTest(MSQL, cbPsevdominEntity.Text, "Sys"); //Результат SQL.

            if (!Test)
            {
                txTime.Text = parser.ParseTimeSQL.ToString();    //Для тестирования. Время выполнения процедур парсера.
                //Выходные данные.
                //Таблицы для парсинга, полученные при работе парсера.
                System.Data.DataTable DTMain;      //Главная таблица, в которой весь запрос.
                System.Data.DataTable DTTable;     //Список таблиц, которые используются в выходном запросе SQL.
                System.Data.DataTable DTEntity;    //Список сущностей, которые используются в исходном запросе MSQL.
                System.Data.DataTable DTUserStr;   //Список строк пользователя в исходном запросе MSQL.
                System.Data.DataTable DTAttrTable;
                System.Data.DataTable DTStateDate;
                parser.ReturnTestTable(out DTMain, out DTEntity, out DTTable, out DTUserStr, out DTAttrTable, out DTStateDate);

                //Выходные данные.
                dgvString.DataSource     = DTMain;
                dgvListEntity.DataSource = DTEntity;
                dgvListTable.DataSource  = DTTable;
                dgvUserString.DataSource = DTUserStr;
                dgvAttrTable.DataSource  = DTAttrTable;
                dgvStateDate.DataSource  = DTStateDate;

                dgvString.Columns[0].Width  = 43;
                dgvString.Columns[1].Width  = 111;
                dgvString.Columns[2].Width  = 50;
                dgvString.Columns[3].Width  = 55;
                dgvString.Columns[4].Width  = 58;
                dgvString.Columns[5].Width  = 50;
                dgvString.Columns[6].Width  = 57;
                dgvString.Columns[7].Width  = 101;
                dgvString.Columns[8].Width  = 73;
                dgvString.Columns[9].Width  = 100;
                dgvString.Columns[10].Width = 64;
                dgvString.Columns[11].Width = 50;
                dgvString.Columns[12].Width = 144;
                dgvString.Columns[13].Width = 118;
                dgvString.Columns[14].Width = 59;
                dgvString.Columns[15].Width = 52;
                dgvString.Columns[16].Width = 58;
                dgvString.Columns[17].Width = 57;
                dgvString.Columns[18].Width = 71;
                dgvString.Columns[19].Width = 72;
                dgvString.Columns[20].Width = 76;
                dgvString.Columns[21].Width = 65;
            }
            return(sql);
        }