示例#1
0
        public static List <Dictionary <string, string> > headerRow = new List <Dictionary <string, string> >(); // Строка заголовка при выгрузке в Excel

        public void collectInfo()
        {
            headerRow.Add(new Dictionary <string, string>()
            {
                { "Фамилия", "General" }
            });
            headerRow.Add(new Dictionary <string, string>()
            {
                { "Имя", "General" }
            });
            headerRow.Add(new Dictionary <string, string>()
            {
                { "Отчество", "General" }
            });
            headerRow.Add(new Dictionary <string, string>()
            {
                { "Дата рождения", "m/d/yyyy" }
            });
            headerRow.Add(new Dictionary <string, string>()
            {
                { "Отряд", "General" }
            });
            headerRow.Add(new Dictionary <string, string>()
            {
                { "Статья", "General" }
            });
            string         connectionString = "Driver={Microsoft FoxPro VFP Driver (*.dbf)};SourceType=DBF;SourceDB=" + tempPath + ";Exclusive=No; NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
            OdbcConnection conn             = new OdbcConnection(connectionString);

            conn.Open();
            OdbcCommand cmd = conn.CreateCommand();

            //Забираем общую инфу по каждому из зеков в наличии (фамилию, имя, отчество, дату рождения, номер отряда)
            cmd.CommandText = queryString + queryStringAdd;
            c.Dispatcher.Invoke(delegate() { ((TextBox)c).Text += "Соединение с базой установлено... \r\n"; });
            DataTable dt = new DataTable();

            dt.Load(cmd.ExecuteReader());
            c.Dispatcher.Invoke(delegate() { tbStatus.Text += "Всего записей найдено: " + dt.Rows.Count.ToString() + "\r\n"; });
            prBar = (ProgressBar)prBar;
            prBar.Dispatcher.Invoke(() => { ((ProgressBar)prBar).Maximum = dt.Rows.Count; });
            c.Dispatcher.Invoke(delegate() { ((TextBox)c).Text += "Выбираем общую информацию...\r\n"; });
            for (int i = 0; i < dt.Rows.Count; i++) // Заталкиваем каждому зеку в поле forOutput инфу, готовую для выгрузки в Excel, и заполняем свойства каждого из элементов resultList (Там лежат объекты ZK)
            {
                resultList.Add(i, new Zk(dt.Rows[i][0].ToString(), dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString(), dt.Rows[i][3].ToString(), dt.Rows[i][4].ToString(), dt.Rows[i][4].ToString()));
                resultList[i].forOutput.Add(dt.Rows[i][1].ToString().Trim());
                resultList[i].forOutput.Add(dt.Rows[i][2].ToString().Trim());
                resultList[i].forOutput.Add(dt.Rows[i][3].ToString().Trim());
                resultList[i].forOutput.Add(dt.Rows[i][4].ToString().Trim());
                resultList[i].forOutput.Add(dt.Rows[i][5].ToString().Trim());
                c.Dispatcher.Invoke(delegate() { tbStatus.Text += "Выбрана запись для: " + dt.Rows[i][1].ToString().Trim() + " " + dt.Rows[i][2].ToString().Trim() + " " + dt.Rows[i][3].ToString().Trim() + "\r\n"; });
                prBar.Dispatcher.Invoke(() => { ((ProgressBar)prBar).Value += 1; });
                MainWindow.lblStat.Dispatcher.Invoke(() => { MainWindow.lblStat.Content = dt.Rows[i][1].ToString().Trim() + " " + dt.Rows[i][2].ToString().Trim() + " " + dt.Rows[i][3].ToString().Trim(); });
            }

            c.Dispatcher.Invoke(delegate() { ((TextBox)c).Text += "Выбираем статьи...\r\n"; });
            prBar.Dispatcher.Invoke(() => { ((ProgressBar)prBar).Value = 0; });

            for (int i = 0; i < resultList.Count; i++) // Выбираем статьи, добавляем их в forOutput и каждому из объектов Zk в resultList
            {
                DBFunctions.Combine_stat(resultList[i], conn);
                c.Dispatcher.Invoke(delegate() { tbStatus.Text += "Выбрана статья для: " + dt.Rows[i][1].ToString().Trim() + " " + dt.Rows[i][2].ToString().Trim() + " " + dt.Rows[i][3].ToString().Trim() + "\r\n"; });
                prBar.Dispatcher.Invoke(() => { ((ProgressBar)prBar).Value += 1; });
                MainWindow.lblStat.Dispatcher.Invoke(() => { MainWindow.lblStat.Content = dt.Rows[i][1].ToString().Trim() + " " + dt.Rows[i][2].ToString().Trim() + " " + dt.Rows[i][3].ToString().Trim(); });
            }
            //Проходим по массиву delegateArray (там лежат делегаты для чекнутых галок) и забираем информацию
            foreach (var item in Class2.delegateArray)
            {
                switch (item.Key)
                {
                case "Combine_srok":
                    MainWindow.infoTb.Dispatcher.Invoke(() => { MainWindow.infoTb.Text += "Выбираем информацию по срокам... \r\n"; });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Начало срока", "m/d/yyyy" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Конец срока", "m/d/yyyy" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Срок", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Дата УДО", "m/d/yyyy" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Дата КП", "m/d/yyyy" }
                    });
                    break;

                case "Combine_obraz":
                    MainWindow.infoTb.Dispatcher.Invoke(() => { MainWindow.infoTb.Text += "Выбираем информацию по образованию... \r\n"; });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Учебное заведение", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Год окончания", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Профессия", "General" }
                    });
                    break;

                case "Combine_chasti":
                    MainWindow.infoTb.Dispatcher.Invoke(() => { MainWindow.infoTb.Text += "Выбираем информацию по частям срока... \r\n"; });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Часть срока до УДО", "# ?/?" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Часть срока до КП", "# ?/?" }
                    });

                    break;

                case "Combine_grazhd":
                    MainWindow.infoTb.Dispatcher.Invoke(() => { MainWindow.infoTb.Text += "Выбираем информацию по гражданству... \r\n"; });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Национальность", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Гражданство", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Зарегистрирован (страна)", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Зарегистрирован (край/область)", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Зарегистрирован (город/район)", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Зарегистрирован (адрес)", "General" }
                    });
                    break;

                case "Combine_narush":
                    MainWindow.infoTb.Dispatcher.Invoke(() => { MainWindow.infoTb.Text += "Выбираем информацию по нарушениям... \r\n"; });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Количество нарушений", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Последнее нарушение", "General" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Количество поощрений", "# ?/?" }
                    });
                    headerRow.Add(new Dictionary <string, string>()
                    {
                        { "Последнее поощрение", "# ?/?" }
                    });
                    break;

                default:
                    break;
                }
                MainWindow.progressBar.Dispatcher.Invoke(() => MainWindow.progressBar.Value = 0);
                for (int j = 0; j < resultList.Count; j++)
                {
                    item.Value(resultList[j], conn);
                }
            }
            MainWindow.lblStat.Dispatcher.Invoke(() => { MainWindow.lblStat.Content = "Кончил!"; });

            btn_ExcelLoad.Dispatcher.Invoke(() => btn_ExcelLoad.IsEnabled = true);

            c.Dispatcher.Invoke(delegate() { ((TextBox)c).Text += "Готово!\r\n"; });
            btn_start.Dispatcher.Invoke(() => { btn_start.IsEnabled = true; });
            btn_ExcelLoad.Dispatcher.Invoke(() => { btn_ExcelLoad.IsEnabled = true; });
            Thread.CurrentThread.Abort();
        }