Пример #1
0
        public override bool CheckSettings()
        {
            if (HasLeadReport && CheckPathSettings())
            {
                //if (Groups.FirstOrDefault(arg => arg.LeadSheetIndex < 0) != null)
                //{	// Все группы должны быть заполнены
                //    MessageBox.Show(m_ParentWnd,
                //                    Properties.Resources.resGroupWithoutLeadSheetIndex,
                //                    Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(),
                //                    MessageBoxButton.OK,
                //                    MessageBoxImage.Error);
                //    return false;
                //}

                if ((from gr in Groups
                     where gr.LeadSheetIndex >= 0
                     group gr by gr.LeadSheetIndex into LeadSheets
                     where LeadSheets.Count() > 1
                     select LeadSheets.Count()).Count() > 0)
                {       // Для разных групп выбраны одинаковые листы
                    MessageBox.Show(m_ParentWnd,
                                    Properties.Resources.resLeadSheetsDuplicated,
                                    Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(),
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    return(false);
                }

                if ((from gr in Groups
                     where gr.LeadSheetIndex >= 0 &&
                     (gr.StartDate.HasValue && gr.EndDate.HasValue && gr.StartDate.Value > gr.EndDate.Value) ||
                     !gr.StartDate.HasValue ||
                     gr.EndDate.Value.Year < GlobalDefines.MIN_GROUP_YEAR
                     select gr).Count() > 0)
                {       // Есть группы с неверно заданными датами
                    MessageBox.Show(m_ParentWnd,
                                    Properties.Resources.resInvalidDatesForLeadSheets,
                                    Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(),
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    return(false);
                }

                if (FirstMemberRow < 1 ||
                    PlaceColumnIndex < 1 ||
                    PersonalDataColumnIndex < 1 ||
                    YearOfBirthColumnIndex < 1 ||
                    TeamColumnIndex < 1)
                {
                    MessageBox.Show(m_ParentWnd,
                                    Properties.Resources.resInvalidLeadReportInfoVals,
                                    Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(),
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// Изменили путь к книге с протоколами трудности
        /// </summary>
        private void OnLeadReportRefreshed()
        {
            LeadSheets.Clear();

            foreach (CGroupItem group in Groups)
            {
                group.LeadSheetIndex  = -1;
                group.LeadSheetsCount = 0;
            }

            if (HasLeadReport && CheckPathSettings())
            {
                bool NewAppCreated;
                MSExcel.Application excelApp = GlobalDefines.StartExcel(out NewAppCreated);

                if (excelApp != null)
                {
                    MSExcel.Workbook wbk           = null;
                    bool             NewWbkCreated = false;

                    try
                    {
                        foreach (MSExcel.Workbook book in excelApp.Workbooks)
                        {
                            if (book.FullName == XlsPath)
                            {   // Книга уже открыта => используем её
                                wbk = book;
                                break;
                            }
                        }
                        if (wbk == null)
                        {
                            if (NewAppCreated)
                            {
                                excelApp.Visible     = true;
                                excelApp.WindowState = MSExcel.XlWindowState.xlMinimized;
                            }
                            wbk = excelApp.Workbooks.Open(XlsPath);
                            if (NewAppCreated)
                            {
                                excelApp.Visible = false;
                            }

                            NewWbkCreated = true;
                        }

                        if (wbk != null)
                        {
                            foreach (MSExcel.Worksheet wsh in wbk.Worksheets)
                            {
                                LeadSheets.Add(wsh.Name);
                            }

                            LeadSheets.Add(Properties.Resources.resCmbiClear); // Последним пунктом будет "Очистить"
                        }

                        foreach (CGroupItem group in Groups)
                        {
                            group.LeadSheetsCount = LeadSheets.Count;
                        }

                        return;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(m_ParentWnd,
                                        string.Format(Properties.Resources.resfmtErrorDurExcelOperation, ex.Message),
                                        Parent == null ? m_ParentWnd.Title : (Parent as TabItem).Header.ToString(),
                                        MessageBoxButton.OK,
                                        MessageBoxImage.Error);
                    }
                    finally
                    {
                        if (wbk != null && NewWbkCreated)
                        {
                            wbk.Saved = true; // Чтобы не появлялось сообщение с вопросом на сохранение
                            wbk.Close();
                        }

                        if (NewAppCreated)
                        {
                            excelApp.Quit();
                        }
                    }
                }
                else
                {
                    MessageBox.Show(m_ParentWnd,
                                    string.Format(Properties.Resources.resfmtErrorDurExcelOperation, Properties.Resources.resCantCreateExcelApp),
                                    Parent == null ? Properties.Resources.resError : (Parent as TabItem).Header.ToString(),
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                }
            }
        }