예제 #1
0
        private void btnExportBill_Click(object sender, RoutedEventArgs e)
        {
            string srcTable = "SrcTableBill";

            // 0. Создание таблицы в базе данных на основе текстового файла
            SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["ConString"]);

            ExportTxtToTable.ExportDataTableToSQLServer(ExportTxtToTable.CreateDataTableFromFile(txtSourceFile.Text, "\t"), srcTable, connection);             // В качестве первого параметра метода ExportDataTableToSQLServer вызывается метод CreateDataTableFromFile возрощающий созданный им DataTable, на оснвое которого будет создана таблица в базе методом ExportDataTableToSQLServer

            // Проверить существуют ли поля указанные в tbl_ConfRef в SrcTable
            string lstField = Model.ConfTable.CheckConfRef(connection, srcTable);

            if (lstField != "")
            {
                MessageBox.Show("В конфигурационной таблице перечислены поля, которых нет в исходном текстовом файле:\n\n" + lstField + "\n\n Экспорт прерван!", "Внимание!");
                return;
            }

            EtranParsingServiceReference.ParsingServiceClient client = new EtranParsingServiceReference.ParsingServiceClient(ConfigurationManager.AppSettings["WcfEndpoint"]);
            client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 5, 0);
            //MessageBox.Show(client.ParseBill(connection));
            EtranParsingServiceReference.ParsingResult[] parsingResult = client.ParseBill(connection);

            #region Лог
            string log = "";                                    // Текстовое представление результата импорта

            DataTable insertDataTable        = new DataTable(); // Результат вставки в таблицу tbl_Bill
            DataTable updateDataTable        = new DataTable(); // Результат обновления таблицы tbl_Bill
            DataTable insertDataTableBillCar = new DataTable(); // Результат вставки в таблицу tbl_CarBill

            // Перебор массива результатов
            for (int i = 0; i < parsingResult.Length; i++)
            {
                // Формирование тектового лога
                if (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.I)
                {
                    if (parsingResult[i].ExeptionMsg == null)
                    {
                        log += string.Format("Добавлено {0} записей в таблицу {1}. ", parsingResult[i].CountProcessedRecords, parsingResult[i].TableName);
                    }
                    else
                    {
                        log += string.Format("Ошибка во время добавления записей в таблицу {1}: {0}. ", parsingResult[i].ExeptionMsg, parsingResult[i].TableName);
                    }
                }
                else if (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.U)
                {
                    if (parsingResult[i].ExeptionMsg == null)
                    {
                        log += string.Format("Обновлено {0} записей в таблице {1}. ", parsingResult[i].CountProcessedRecords, parsingResult[i].TableName);
                    }
                    else
                    {
                        log += string.Format("Ошибка во время обновления записей в таблице {1}: {0}. ", parsingResult[i].ExeptionMsg, parsingResult[i].TableName);
                    }
                }

                // Получение табличного представления изменений. Определение отношения таблица-изменения
                if ((parsingResult[i].TableName == "tbl_Bill") & (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.I))
                {
                    insertDataTable = parsingResult[i].DataTableResult;
                }

                if ((parsingResult[i].TableName == "tbl_Bill") & (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.U))
                {
                    updateDataTable = parsingResult[i].DataTableResult;
                }

                if ((parsingResult[i].TableName == "tbl_BillCar") & (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.I))
                {
                    insertDataTableBillCar = parsingResult[i].DataTableResult;
                }
            }

            this.textBlockCarNumLog.Text  = "";
            this.textBlockCarNumLog.Text += log;

            // Формирование табличного лога по tbl_Bill
            IEnumerable <DataRow> unionLog = null;
            if ((insertDataTable != null) & (updateDataTable != null))
            {
                // 1. Выбор из таблицы updateDataTable идешников, которых нету в insertDataTable
                var exceptedRecords = (from ut in updateDataTable.AsEnumerable() select ut[0])
                                      .Except(from it in insertDataTable.AsEnumerable() select it[0]);
                // 2. Выбор полной строки из updateDataTable на основе идешников которых нет в insertDataTable
                var join = from ut in updateDataTable.AsEnumerable()
                           join r in exceptedRecords
                           on ut.ItemArray[0] equals r
                           select ut;
                // 3. Совмещение полного списка insertDataTable с сформированным join
                unionLog = (from it in insertDataTable.AsEnumerable() select it).Union(join);
            }
            else if (insertDataTable != null)
            {
                unionLog = from it in insertDataTable.AsEnumerable() select it;
            }
            else if (updateDataTable != null)
            {
                unionLog = from it in updateDataTable.AsEnumerable() select it;
            }

            if ((unionLog != null) && (unionLog.ToArray().Count() != 0))
            {
                DataRow[] dataRowArray = unionLog.ToArray();
                DataTable dataTable    = dataRowArray.CopyToDataTable();

                this.dataGridBillLog.ItemsSource = dataTable.DefaultView;
            }

            // Формирование табличного лога по tbl_CarBill
            IEnumerable <DataRow> insertBillCarLog = null;
            if (insertDataTableBillCar != null)
            {
                insertBillCarLog = from it in insertDataTableBillCar.AsEnumerable() select it;
            }

            if ((insertBillCarLog != null) && (insertBillCarLog.ToArray().Count() != 0))
            {
                DataRow[] billCarDataRowArray = insertBillCarLog.ToArray();
                DataTable billCarDataTable    = billCarDataRowArray.CopyToDataTable();

                this.dataGridBillCarLog.ItemsSource = billCarDataTable.DefaultView;
            }
            #endregion
        }
예제 #2
0
        private void btnExportZ_Click(object sender, RoutedEventArgs e)
        {
            string srcTable = "SrcTableZ";

            // 0. Создание таблицы в базе данных на основе текстового файла
            SqlConnection connection = new SqlConnection(ConfigurationManager.AppSettings["ConString"]);

            ExportTxtToTable.ExportDataTableToSQLServer(ExportTxtToTable.CreateDataTableFromFile(txtSourceFile.Text, "\t"), srcTable, connection);             // В качестве первого параметра метода ExportDataTableToSQLServer вызывается метод CreateDataTableFromFile возрощающий созданный им DataTable, на оснвое которого будет создана таблица в базе методом ExportDataTableToSQLServer

            // Проверить существуют ли поля указанные в tbl_ConfRef в SrcTable
            string lstField = Model.ConfTable.CheckConfRef(connection, srcTable);

            if (lstField != "")
            {
                MessageBox.Show("В конфигурационной таблице перечислены поля, которых нет в исходном текстовом файле:\n\n" + lstField + "\n\n Экспорт прерван!", "Внимание!");
                return;
            }

            EtranParsingServiceReference.ParsingServiceClient client = new EtranParsingServiceReference.ParsingServiceClient();
            client.Endpoint.Binding.SendTimeout = new TimeSpan(0, 0, 5, 0);
            //MessageBox.Show(client.ParseZ(connection));
            EtranParsingServiceReference.ParsingResult[] parsingResult = client.ParseZ(connection);

            #region Лог
            string log = "";

            DataTable insertDataTable = new DataTable();
            DataTable updateDataTable = new DataTable();

            for (int i = 0; i < parsingResult.Length; i++)
            {
                /*if ((parsingResult[i].CountProcessedRecords > 0) & (dt.Rows.Count == 0))
                 * {
                 *      dt = parsingResult[i].DataTableResult;
                 * }
                 * else if ((parsingResult[i].CountProcessedRecords > 0) & (dt.Rows.Count != 0))
                 * {
                 *      dt.Merge(parsingResult[i].DataTableResult);
                 * }*/

                if (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.I)                //ParsingResult.OperationList.I)//'I')
                {
                    if (parsingResult[i].ExeptionMsg == null)
                    {
                        log += string.Format("Добавлено {0} записей в таблицу {1}. ", parsingResult[i].CountProcessedRecords, parsingResult[i].TableName);
                    }
                    else
                    {
                        log += string.Format("Ошибка во время добавления заявок: {0}. ", parsingResult[i].ExeptionMsg);
                    }
                }
                else if (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.U)                // ParsingResult.OperationList.U)//'U')
                {
                    if (parsingResult[i].ExeptionMsg == null)
                    {
                        log += string.Format("Обновлено {0} записей в таблице {1}. ", parsingResult[i].CountProcessedRecords, parsingResult[i].TableName);
                    }
                    else
                    {
                        log += string.Format("Ошибка во время обновления заявок: {0}. ", parsingResult[i].ExeptionMsg);
                    }
                }

                if ((parsingResult[i].TableName == "tbl_Zayavka") & (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.I))
                {
                    insertDataTable = parsingResult[i].DataTableResult;
                }

                if ((parsingResult[i].TableName == "tbl_Zayavka") & (parsingResult[i].Operation == EtranParsingServiceReference.OperationList.U))
                {
                    updateDataTable = parsingResult[i].DataTableResult;
                }
            }

            textBlockZayavkaLog.Text += log;
            /*dataGrid1.ItemsSource = dt.DefaultView;*/

            IEnumerable <DataRow> unionLog = null;
            if (insertDataTable != null)
            {
                // 1. Выбор из таблицы updateDataTable идешников, которых нету в insertDataTable
                var exceptedRecords = (from ut in updateDataTable.AsEnumerable() select ut[0])
                                      .Except(from it in insertDataTable.AsEnumerable() select it[0]);
                // 2. Выбор полной строки из updateDataTable на основе идешников которых нет в insertDataTable
                var join = from ut in updateDataTable.AsEnumerable()
                           join r in exceptedRecords
                           on ut.ItemArray[0] equals r
                           select ut;
                // 3. Совмещение полного списка insertDataTable с сформированным join
                unionLog = (from it in insertDataTable.AsEnumerable() select it).Union(join);
            }
            else if (insertDataTable != null)
            {
                unionLog = from it in insertDataTable.AsEnumerable() select it;
            }
            else if ((updateDataTable != null) & (updateDataTable != null))
            {
                unionLog = from it in updateDataTable.AsEnumerable() select it;
            }

            if ((unionLog != null) && (unionLog.ToArray().Count() != 0))
            {
                DataRow[] dataRowArray = unionLog.ToArray();
                DataTable dataTable    = dataRowArray.CopyToDataTable();

                this.dataGridZayavkaLog.ItemsSource = dataTable.DefaultView;
            }
            #endregion
        }