예제 #1
0
        private void RecordError(string errString)
        {
            TableError err = new TableError();

            err.LineNumber  = LineNumber;
            err.Description = errString;
            TableErrors.Add(err);
        }
예제 #2
0
        public void RepairTable(bool repairVolInconcictensy = false, bool Quiet = false) //исправление ошибок в таблице
        {
            TableErrors check         = _checkTable();                                   //определение, что требуется исправить
            bool        isSmthChanged = false;                                           //флаг наличия исправлений в таблице

            if (!Quiet)
            {
                OnTableRepaired(new CTEventArgs(true, "Выполняется исправление таблицы " + CTid));
            }

            do
            {
                switch (check)
                {
                case TableErrors.TableOK:
                    if (!Quiet)
                    {
                        OnTableRepaired(new CTEventArgs(true, "\t\tошибки не обнаружены"));
                    }
                    break;

                case TableErrors.UnSorted:
                    _sortTable();
                    isSmthChanged = true;
                    if (!Quiet)
                    {
                        OnTableRepaired(new CTEventArgs(false, "\t\tтаблица отсортирована"));
                    }
                    break;

                case TableErrors.LevelInconsistency:
                    _repairLevelInconsistency();
                    isSmthChanged = true;
                    if (!Quiet)
                    {
                        OnTableRepaired(new CTEventArgs(false, "\t\tисправлена непоследовательность уровней"));
                    }
                    break;

                case TableErrors.VolumeInconsistency:
                    if (repairVolInconcictensy)
                    {
                        _repairVolumeInconsistency();
                        isSmthChanged = true;
                        if (!Quiet)
                        {
                            OnTableRepaired(new CTEventArgs(false, "\t\tисправлена непоследовательность объемов"));
                        }
                    }
                    break;
                }
                check = _checkTable();  //определение, что требуется исправить
                //если исправлять непоследовательность объемов не надо и осталась только эта ошибка, прервем процесс восстановления
                if (check == TableErrors.VolumeInconsistency && !repairVolInconcictensy)
                {
                    break;
                }
            } while (check != TableErrors.TableOK); //пока есть, что исправлять

            if (!Quiet)
            {
                if (isSmthChanged)
                {
                    OnTableRepaired(new CTEventArgs(true, "\tвсе ошибки исправлены"));
                }
                else
                {
                    OnTableRepaired(new CTEventArgs(true, "\tисправление таблицы не требуется"));
                }
            }
        }