예제 #1
0
파일: FormImport.cs 프로젝트: ewgeny911/FBA
        /// <summary>
        /// Проверка формата колонок.
        /// </summary>
        /// <param name="errorMes">Список найденных ошибки</param>
        /// <returns>Если ошибок нет, то результат true</returns>
        private bool CheckFormatColumns(out string errorMes)
        {
            //Копируем DataTable. Все операции будем производить с копией.
            System.Data.DataTable dt2 = sys.DataTable_To_DataTable(dt);

            errorMes = "";
            int columnCount = dt.Columns.Count;

            string[,] arrErrors = new string[dt.Rows.Count, dt.Columns.Count];


            for (int i = 0; i < importDT.Rows.Count; i++)
            {
                string columnType   = importDT.Value("ColumnType");
                string columnFormat = importDT.Value("ColumnFormat");
                string defaultValue = importDT.Value("DefaultValue");
                string tryParse     = importDT.Value("TryParse");
                string setValue     = importDT.Value("SetValue");
                string setCharCase  = importDT.Value("SetCharCase");
                string minValue     = importDT.Value("MinValue");
                string maxValue     = importDT.Value("MaxValue");
                string deleteChars  = importDT.Value("DeleteChars");
                string leaveChars   = importDT.Value("LeaveChars");

                //Это для ускорения работы, чтобы каждый раз не переводить minValue в дату для стравнения в цикле.
                DateTime minValueDate = DateTime.Now;           //Это по умолчанию
                DateTime maxValueDate = DateTime.Now;           //Это по умолчанию
                TimeSpan minValueTime = DateTime.Now.TimeOfDay; //Это по умолчанию
                TimeSpan maxValueTime = DateTime.Now.TimeOfDay; //Это по умолчанию

                if ((minValue != ""))
                {
                    if (columnFormat == "date")
                    {
                        minValueDate = DateTime.ParseExact(minValue, "dd.MM.yyyy", null);
                    }
                    if (columnFormat == "time")
                    {
                        minValueTime = TimeSpan.ParseExact(minValue, "hh:mm:ss", null);
                    }
                }

                if ((maxValue != ""))
                {
                    if (columnFormat == "date")
                    {
                        maxValueDate = DateTime.ParseExact(maxValue, "dd.MM.yyyy", null);
                    }
                    if (columnFormat == "time")
                    {
                        maxValueTime = TimeSpan.ParseExact(maxValue, "hh:mm:ss", null);
                    }
                }

                if (i >= columnCount)
                {
                    break;
                }

                //Выходим, если в настроечной таблице, колонок больше, чем в проверяемой. например есть необязательные колонки.
                //Их нет, поэтому проверять нечего.
                if ((dt2.Columns.Count - 1) < i)
                {
                    break;
                }

                //Одна колонка importDT соответствует одной колонке dt. Поэтому идем по значениям колонки dt.
                for (int j = 0; j < dt2.Rows.Count; j++)
                {
                    string value    = dt2.Value(j, i);
                    string newvalue = "";
                    arrErrors[j, i] = CheckFormatValue(columnType,
                                                       columnFormat,
                                                       defaultValue,
                                                       tryParse,
                                                       setValue,
                                                       setCharCase,
                                                       minValue,
                                                       maxValue,
                                                       minValueDate,
                                                       maxValueDate,
                                                       minValueTime,
                                                       maxValueTime,
                                                       deleteChars,
                                                       leaveChars,
                                                       value,
                                                       out newvalue);
                    if (newvalue != "")
                    {
                        dt.Rows[j][i] = newvalue;
                    }
                }
            }

            return(errorMes == "");
        }
예제 #2
0
파일: FormImport.cs 프로젝트: ewgeny911/FBA
        /// <summary>
        /// Проверка наличия колонок.
        /// </summary>
        /// <param name="errorMes">Список найденных ошибки</param>
        /// <returns>Если ошибок нет, то результат true</returns>
        private bool CheckColumns(out string errorMes)
        {
            errorMes = "";
            for (int i = 0; i < importDT.Rows.Count; i++)
            {
                string importColumnName       = importDT.Value("ColumnName");
                string importColumnObligatory = importDT.Value("ColumnObligatory");

                //Проверка на обязательность наличия колонки.
                if ((importColumnObligatory.ToInt() == 1) && (i >= dt.Columns.Count))
                {
                    errorMes = errorMes + "Ошибка. Отсутствует обязательная колонка " + importColumnName + Var.CR;
                    continue;
                }

                //Проверка на название колонки.
                string columnName = dt.Columns[i].Caption;
                if (columnName != importColumnName)
                {
                    errorMes = errorMes + "Ошибка. Колонка с номером " + i.ToString() + " должна иметь название " + importColumnName + Var.CR;
                    continue;
                }
            }
            return(errorMes == "");
        }