using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
//using System.Reflection;
using System.IO;
using Microsoft.VisualBasic.FileIO;
using System.IO.Compression;

using SystemCommon;



namespace 顧客分析君
{
    //TODO：全TBLを最新定義に合わせる

    public partial class _103処理状況 : Form
    {
        ////////////////////////////////////////////////////////////////////////
        // メンバ変数
        ////////////////////////////////////////////////////////////////////////
        #region メンバ変数

        public byte mbtMode = 1;     // 1：バックアップ　２：復元
        //public string mstrBackupPath;

        #endregion


        ////////////////////////////////////////////////////////////////////////
        // 公開 共通メソッド 
        ////////////////////////////////////////////////////////////////////////
        #region 公開 共通メソッド

        public _103処理状況()
        {
            InitializeComponent();
        }

        #endregion

        
        ////////////////////////////////////////////////////////////////////////
        // 非公開 共通メソッド
        ////////////////////////////////////////////////////////////////////////
        #region 非公開 共通メソッド

        private bool IsValidate()
        {
            if (txt選択ファイル.Text == "")
            {
                string msg = string.Format(Properties.Resources.MSG_W_012, Properties.Resources.MSG_I_ファイル);
                MessageBox.Show(msg, this.Text, MessageBoxButtons.OK,MessageBoxIcon.Warning);

                return false;
            }

            return true;
        }
        
        private void バックアップ()
        {
			if (File.Exists(txt選択ファイル.Text))
				File.Delete(txt選択ファイル.Text);

			string 一時ファイル = string.Format(@"{0}{1}.csv", Path.GetTempPath(), DateTime.Now.ToString("yyyyMMddHHmmss"));

			一時ファイル = txt選択ファイル.Text;

            pgs処理.Minimum = 1;
            pgs処理.Step = 1;

            // マスターデータのバックアップ
            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（1/32）";
            lbl処理詳細.Refresh();

			int iRowCnt = 0;
			string strデータ = "";
			
			D06商品一覧.D06商品更新DataTable dtD06商品更新 = new D06商品一覧.D06商品更新DataTable();
            d06商品更新ta.Fill(dtD06商品更新);
            pgs処理.Maximum = dtD06商品更新.Count;
            foreach (D06商品一覧.D06商品更新Row row in dtD06商品更新)
            {
				//sw.Write("INSERT INTO M02商品 (商品No, 商品ID, 商品名, 商品単価, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時 "
				//       + ")VALUES("
				//       + row.商品No + ",'" + row.商品ID + "','" + row.商品名 + "'," + row.商品単価 + "," 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M02商品 (商品No, 商品ID, 商品名, 商品単価, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時 "
				//       + ")VALUES("
				//       + row.商品No + ",'" + row.商品ID + "','" + row.商品名 + "'," + row.商品単価 + "," 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO M02商品 (商品No, 商品ID, 商品名, 商品単価, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時 "
                       + ")VALUES("
					   + row.商品No + ",'" + row.商品ID + "','" + FileCommon.EscapeSql(row.商品名) + "'," + row.商品単価 + "," 
                       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					   + "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}
				
				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}
			
			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（2/32）";
            lbl処理詳細.Refresh();

            D10顧客.D10顧客2DataTable dtD10顧客 = new D10顧客.D10顧客2DataTable();
            d10顧客2ta.Fill(dtD10顧客);
            pgs処理.Maximum = dtD10顧客.Count;
            foreach (D10顧客.D10顧客2Row row in dtD10顧客)
            {
				//sw.Write("INSERT INTO M03顧客 (顧客No, 顧客ID, 氏名, 氏名カナ, 性別, 生年月日, 郵便番号, 住所, TEL, メールアドレス"
				//       + ", メルマガ許諾, 備考, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.顧客No + ",'" + row.顧客ID + "','" + row.氏名 + "','" + row.氏名カナ + "'," + row.性別
				//       + ",'" + row.生年月日 + "','" + row.郵便番号 + "','" + row.住所 + "','" + row.TEL + "','"
				//       + row.メールアドレス + "','" + row.メルマガ許諾 + "','" + row.備考 + "',"
				////       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M03顧客 (顧客No, 顧客ID, 氏名, 氏名カナ, 性別, 生年月日, 郵便番号, 住所, TEL, メールアドレス"
				//       + ", メルマガ許諾, 備考, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.顧客No + ",'" + row.顧客ID + "','" + row.氏名 + "','" + row.氏名カナ + "'," + row.性別
				//       + ",'" + row.生年月日 + "','" + row.郵便番号 + "','" + row.住所 + "','" + row.TEL + "','"
				//       + row.メールアドレス + "','" + row.メルマガ許諾 + "','" + row.備考 + "',"
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO M03顧客 (顧客No, 顧客ID, 氏名, 氏名カナ, 性別, 生年月日, 郵便番号, 住所, TEL, メールアドレス"
					+ ", メルマガ許諾, 備考, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES("
					+ row.顧客No + ",'" + row.顧客ID + "','" + row.氏名 + "','" + row.氏名カナ + "'," + row.性別
					+ ",'" + row.生年月日 + "','" + row.郵便番号 + "','" + FileCommon.EscapeSql(row.住所) + "','" + row.TEL + "','"
					+ FileCommon.EscapeSql(row.メールアドレス) + "','" + row.メルマガ許諾 + "','" + FileCommon.EscapeSql(row.備考) + "',"
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（3/32）";
            lbl処理詳細.Refresh();

            D01業務共通.D01属性更新DataTable dt属性更新 = new D01業務共通.D01属性更新DataTable();
            d01属性更新ta.Fill(dt属性更新);
            pgs処理.Maximum = dt属性更新.Count;
            foreach (D01業務共通.D01属性更新Row row in dt属性更新)
            {
				//sw.Write("INSERT INTO M04属性 (属性No, 区分, 値, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//         + ")VALUES("
				//         + row.属性No + "," + row.区分 + ",'" + row.値 + "'," + 
				//         + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M04属性 (属性No, 区分, 値, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//         + ")VALUES("
				//         + row.属性No + "," + row.区分 + ",'" + row.値 + "'," + 
				//         + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO M04属性 (属性No, 区分, 値, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES("
					+ row.属性No + "," + row.区分 + ",'" + row.値 + "'," +
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（4/32）";
            lbl処理詳細.Refresh();

            D05計算.D05RFM計算条件DataTable dt計算条件 = new D05計算.D05RFM計算条件DataTable();
            d05RFM計算条件ta.Fill(dt計算条件);
            pgs処理.Maximum = dt計算条件.Count;
            foreach (D05計算.D05RFM計算条件Row row in dt計算条件)
            {
				//sw.Write("INSERT INTO M05RFM計算条件 (条件No, 値, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.条件No + ",'" + row.値 + "'," + 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M05RFM計算条件 (条件No, 値, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.条件No + ",'" + row.値 + "'," + 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO M05RFM計算条件 (条件No, 値, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES("
					+ row.条件No + ",'" + row.値 + "'," +
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（5/32）";
            lbl処理詳細.Refresh();

            D12スタッフ.D12スタッフDataTable dtスタッフ = new D12スタッフ.D12スタッフDataTable();
            d12スタッフta.Fill(dtスタッフ);
            pgs処理.Maximum = dtスタッフ.Count;
            foreach (D12スタッフ.D12スタッフRow row in dtスタッフ)
            {
				//sw.Write("INSERT INTO M07スタッフ (スタッフNo, スタッフID, パスワード, 役職No, 氏名, 権限No, 備考"
				//       +" , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.スタッフNo + ",'" + row.スタッフID + "','" + row.パスワード + "'," + row.役職No + ",'" + row.氏名 + "'," 
				//       + row.権限No + ",'" + row.備考 + "',"
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M07スタッフ (スタッフNo, スタッフID, パスワード, 役職No, 氏名, 権限No, 備考"
				//       +" , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.スタッフNo + ",'" + row.スタッフID + "','" + row.パスワード + "'," + row.役職No + ",'" + row.氏名 + "'," 
				//       + row.権限No + ",'" + row.備考 + "',"
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO M07スタッフ (スタッフNo, スタッフID, パスワード, 役職No, 氏名, 権限No, 備考"
					+ " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES("
					+ row.スタッフNo + ",'" + row.スタッフID + "','" + FileCommon.EscapeSql(row.パスワード) + "'," + row.役職No + ",'" + row.氏名 + "',"
					+ row.権限No + ",'" + FileCommon.EscapeSql(row.備考) + "',"
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（6/32）";
            lbl処理詳細.Refresh();

            D12スタッフ.D12オープン可能画面DataTable dtオープン可能画面 = new D12スタッフ.D12オープン可能画面DataTable();
            d12オープン可能画面ta.Fill(dtオープン可能画面);
            pgs処理.Maximum = dtスタッフ.Count;
            foreach (D12スタッフ.D12オープン可能画面Row row in dtオープン可能画面)
            {
				//sw.Write("INSERT INTO M08オープン可能画面 (権限No, 画面No, 可不可"
				//       + " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.権限No + "," + row.画面No + "," + row.可不可 + ","
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M08オープン可能画面 (権限No, 画面No, 可不可"
				//       + " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.権限No + "," + row.画面No + "," + row.可不可 + ","
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO M08オープン可能画面 (権限No, 画面No, 可不可"
					+ " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES("
					+ row.権限No + "," + row.画面No + "," + row.可不可 + ","
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（7/32）";
            lbl処理詳細.Refresh();

            D01業務共通.D01属性区分DataTable dt属性区分 = new D01業務共通.D01属性区分DataTable();
            d01属性区分ta.Fill(dt属性区分);
            pgs処理.Maximum = dt属性区分.Count;
            foreach (D01業務共通.D01属性区分Row row in dt属性区分)
            {
				//sw.Write("INSERT INTO M09属性区分 (属性区分No, 編集フラグ, 区分名"
				//       + ")VALUES("
				//       + row.属性区分No + "," + row.編集フラグ + ",'" + row.区分名 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO M09属性区分 (属性区分No, 編集フラグ, 区分名"
				//       + ")VALUES("
				//       + row.属性区分No + "," + row.編集フラグ + ",'" + row.区分名 + "');");
				strデータ += "INSERT INTO M09属性区分 (属性区分No, 編集フラグ, 区分名"
					+ ")VALUES("
					+ row.属性区分No + "," + row.編集フラグ + ",'" + row.区分名 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（8/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99広告DataTable dt広告 = new D99バックアップ.D99広告DataTable();
			D99バックアップTableAdapters.D99広告ta d広告ta = new 顧客分析君.D99バックアップTableAdapters.D99広告ta();
			d広告ta.Fill(dt広告);
			pgs処理.Maximum = dt広告.Count;

			foreach (D99バックアップ.D99広告Row row in dt広告)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO M10広告 (" +
				//    "広告No, 広告名, 担当者名, TEL, FAX, メールアドレス, URL, 備考, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//    + ")VALUES(" +
				//   row.広告No + "," + row.広告名 + "," + row.担当者名 + "," + row.TEL + "," + row.FAX + "," + row.メールアドレス + "," +
				//   row.URL + "," + row.備考 + "," + row.登録スタッフNo + "," + row.登録日時 + "," + row.更新スタッフNo + "," +
				//   row.更新日時 + "');");
				strデータ += "INSERT INTO M10広告 (" 
					+ "広告No, 広告名, 担当者名, TEL, FAX, メールアドレス, URL, 備考, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES(" 
					+ row.広告No + "," + FileCommon.EscapeSql(row.広告名) + "," + row.担当者名 + "," + row.TEL + "," + row.FAX + "," 
					+ FileCommon.EscapeSql(row.メールアドレス) + "," 
					+ FileCommon.EscapeSql(row.URL) + "," + FileCommon.EscapeSql(row.備考) + "," 
					+ row.登録スタッフNo + "," + row.登録日時 + "," + row.更新スタッフNo + "," + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            // 履歴データのバックアップ

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（9/32）";
            lbl処理詳細.Refresh();

			D99バックアップ.D99販売履歴DataTable dt販売履歴 = new D99バックアップ.D99販売履歴DataTable();
			D99バックアップTableAdapters.D99販売履歴ta d99販売履歴ta = new 顧客分析君.D99バックアップTableAdapters.D99販売履歴ta();
			d99販売履歴ta.Fill(dt販売履歴);
            pgs処理.Maximum = dt販売履歴.Count;
			foreach (D99バックアップ.D99販売履歴Row row in dt販売履歴)
            {
				//sw.Write("INSERT INTO H01販売履歴 (販売履歴No, 販売日時, 商品ID, 商品名, 商品単価, 販売個数, 販売金額, 顧客ID, 商品No, 顧客No"
				//       + " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//       + ")VALUES("
				//       + row.販売履歴No + ",'" + row.販売日時 + "','" + row.商品ID + "','" + row.商品名 + "',"
				//       + row.商品単価 + "," + row.販売個数 + "," + row.販売金額 + ",'" + row.顧客ID + "',"
				//       + row.商品No + "," + row.顧客No + "," 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル
				//    , "INSERT INTO H01販売履歴 (販売履歴No, 販売日時, 商品ID, 商品名, 商品単価, 販売個数, 販売金額, 顧客ID, 商品No, 顧客No"
				//   + " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
				//   + ")VALUES("
				//   + row.販売履歴No + ",'" + row.販売日時 + "','" + row.商品ID + "','" + row.商品名 + "',"
				//   + row.商品単価 + "," + row.販売個数 + "," + row.販売金額 + ",'" + row.顧客ID + "',"
				//   + row.商品No + "," + row.顧客No + ","
				//   + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.更新日時 + "');");
				strデータ += "INSERT INTO H01販売履歴 (販売履歴No, 販売日時, 商品ID, 商品名, 商品単価, 販売個数, 販売金額, 顧客ID, 商品No, 顧客No"
					+ " , 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時"
					+ ")VALUES("
					+ row.販売履歴No + ",'" + row.販売日時 + "','" + row.商品ID + "','" + FileCommon.EscapeSql(row.商品名) + "',"
					+ row.商品単価 + "," + row.販売個数 + "," + row.販売金額 + ",'" + row.顧客ID + "',"
					+ row.商品No + "," + row.顧客No + ","
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（10/32）";
            lbl処理詳細.Refresh();

            D13コンタクト.D13コンタクト履歴2DataTable dtコンタクト履歴 = new D13コンタクト.D13コンタクト履歴2DataTable();
            d13コンタクト履歴2ta.Fill(dtコンタクト履歴);
            pgs処理.Maximum = dt販売履歴.Count;
            foreach (D13コンタクト.D13コンタクト履歴2Row row in dtコンタクト履歴)
            {
				//sw.Write("INSERT INTO H02コンタクト履歴 (コンタクト履歴No, 顧客No, コンタクト日時, 件名, 本文, バウンドNo, ツールNo, 備考"
				//       + ", コンタクトスタッフNo, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時)"
				//       + "VALUES("
				//       + row.コンタクト履歴No + ",'" + row.顧客No + "','" + row.コンタクト日時 + "','" + row.件名 + "',"
				//       + row.本文 + "," + row.バウンドNo + "," + row.ツールNo + ",'" + row.備考 + "'," + row.コンタクトスタッフNo + "',"
				////       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H02コンタクト履歴 (コンタクト履歴No, 顧客No, コンタクト日時, 件名, 本文, バウンドNo, ツールNo, 備考"
				//       + ", コンタクトスタッフNo, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時)"
				//       + "VALUES("
				//       + row.コンタクト履歴No + ",'" + row.顧客No + "','" + row.コンタクト日時 + "','" + row.件名 + "',"
				//       + row.本文 + "," + row.バウンドNo + "," + row.ツールNo + ",'" + row.備考 + "'," + row.コンタクトスタッフNo + "',"
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO H02コンタクト履歴 (コンタクト履歴No, 顧客No, コンタクト日時, 件名, 本文, バウンドNo, ツールNo, 備考"
					+ ", コンタクトスタッフNo, 登録スタッフNo, 登録日時, 更新スタッフNo, 更新日時)"
					+ "VALUES("
					+ row.コンタクト履歴No + ",'" + row.顧客No + "','" + row.コンタクト日時 + "','" + FileCommon.EscapeSql(row.件名) + "',"
					+ FileCommon.EscapeSql(row.本文) + "," + row.バウンドNo + "," + row.ツールNo + ",'" + FileCommon.EscapeSql(row.備考) + "'," + 
					row.コンタクトスタッフNo + "',"
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（11/32）";
            lbl処理詳細.Refresh();

            D14操作履歴.D14操作履歴DataTable dt操作履歴 = new D14操作履歴.D14操作履歴DataTable();
            d14操作履歴ta.Fill(dt操作履歴);
            pgs処理.Maximum = dt操作履歴.Count;
            foreach (D14操作履歴.D14操作履歴Row row in dt操作履歴)
            {
				//sw.Write("INSERT INTO H03操作履歴 (操作日時, 操作端末名, 操作スタッフ氏名, 操作画面, 操作内容, 登録スタッフNo, 登録日時"
				//       + ", 更新スタッフNo, 更新日時)"
				//       + "VALUES('"
				//       + row.操作日時 + "','" + row.操作端末名 + "','" + row.操作スタッフ氏名 + "','" + row.操作画面 + "','"
				//       + row.操作内容 + "'," 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H03操作履歴 (操作日時, 操作端末名, 操作スタッフ氏名, 操作画面, 操作内容, 登録スタッフNo, 登録日時"
				//       + ", 更新スタッフNo, 更新日時)"
				//       + "VALUES('"
				//       + row.操作日時 + "','" + row.操作端末名 + "','" + row.操作スタッフ氏名 + "','" + row.操作画面 + "','"
				//       + row.操作内容 + "'," 
				//       + row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');");
				strデータ += "INSERT INTO H03操作履歴 (操作日時, 操作端末名, 操作スタッフ氏名, 操作画面, 操作内容, 登録スタッフNo, 登録日時"
					+ ", 更新スタッフNo, 更新日時)"
					+ "VALUES('"
					+ row.操作日時 + "','" + row.操作端末名 + "','" + row.操作スタッフ氏名 + "','" + row.操作画面 + "','"
					+ row.操作内容 + "',"
					+ row.登録スタッフNo + ",'" + row.登録日時 + "'," + row.更新スタッフNo + ",'" + row.登録日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（12/32）";
			lbl処理詳細.Refresh();

			//D10顧客.D10家族構成DataTable dt家族構成 = new D10顧客.D10家族構成DataTable();
			//D10顧客TableAdapters.D10家族構成ta d家族構成ta = new 顧客分析君.D10顧客TableAdapters.D10家族構成ta();
			//d家族構成ta.Fill(dt家族構成);
			//pgs処理.Maximum = dt家族構成.Count;
			D99バックアップ.D99家族構成DataTable dt家族構成 = new D99バックアップ.D99家族構成DataTable();
			D99バックアップTableAdapters.D99家族構成ta d家族構成ta = new 顧客分析君.D99バックアップTableAdapters.D99家族構成ta();
			d家族構成ta.Fill(dt家族構成);
			pgs処理.Maximum = dt家族構成.Count;

			foreach (D99バックアップ.D99家族構成Row row in dt家族構成)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H04家族構成 ("
				//    + " 家族構成No ,顧客No ,家族区分 ,氏名 ,氏名カナ ,性別 ,生年月日 ,郵便番号 ,住所 ,TEL ,メールアドレス ,顧客ID ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.家族構成No + "','" + row.顧客No + "','" + row.家族区分 + "','" + row.氏名 + "','" + row.氏名カナ + "','"
				//    + row.性別 + "','" + row.生年月日 + "','" + row.郵便番号 + "','" + row.生年月日 + "','" + row.郵便番号 + "','"
				//    + row.住所 + "','" + row.TEL + "','" + row.メールアドレス + "','" + row.顧客ID + "','" + row.備考 + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','"
				//    + row.更新日時 + "');");
				strデータ += "INSERT INTO H04家族構成 ("
					+ " 家族構成No ,顧客No ,家族区分 ,氏名 ,氏名カナ ,性別 ,生年月日 ,郵便番号 ,住所 ,TEL ,メールアドレス ,顧客ID ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.家族構成No + "','" + row.顧客No + "','" + row.家族区分 + "','" + row.氏名 + "','" + row.氏名カナ + "','"
					+ row.性別 + "','" + row.生年月日 + "','" + row.郵便番号 + "','" + row.生年月日 + "','" + row.郵便番号 + "','"
					+ FileCommon.EscapeSql(row.住所) + "','" + row.TEL + "','" + FileCommon.EscapeSql(row.メールアドレス) + "','" 
					+ row.顧客ID + "','" + FileCommon.EscapeSql(row.備考) + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（13/32）";
			lbl処理詳細.Refresh();

			//D10顧客.D10顧客補足DataTable dt顧客補足 = new D10顧客.D10顧客補足DataTable();
			//D10顧客TableAdapters.D10顧客補足ta d顧客補足ta = new 顧客分析君.D10顧客TableAdapters.D10顧客補足ta();
			//d顧客補足ta.Fill(dt顧客補足);
			//pgs処理.Maximum = dt顧客補足.Count;
			D99バックアップ.D99顧客補足DataTable dt顧客補足 = new D99バックアップ.D99顧客補足DataTable();
			D99バックアップTableAdapters.D99顧客補足ta d顧客補足ta = new 顧客分析君.D99バックアップTableAdapters.D99顧客補足ta();
			d顧客補足ta.Fill(dt顧客補足);
			pgs処理.Maximum = dt顧客補足.Count;

			foreach (D99バックアップ.D99顧客補足Row row in dt顧客補足)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H05顧客補足 ("
				//    + " 顧客補足No ,顧客No ,補足名No ,補足内容 ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.顧客補足No + "','" + row.顧客No + "','" + row.補足名No + "','"
				//    + row.補足内容 + "','" + row.備考 + "','" + row.登録スタッフNo + "','"
				//    + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時
				//    + "');");
				strデータ += "INSERT INTO H05顧客補足 ("
					+ " 顧客補足No ,顧客No ,補足名No ,補足内容 ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.顧客補足No + "','" + row.顧客No + "','" + row.補足名No + "','"
					+ FileCommon.EscapeSql(row.補足内容) + "','" + FileCommon.EscapeSql(row.備考) + "','" 
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（14/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99PR履歴DataTable dtPR履歴 = new D99バックアップ.D99PR履歴DataTable();
			D99バックアップTableAdapters.D99PR履歴ta dPR履歴ta = new 顧客分析君.D99バックアップTableAdapters.D99PR履歴ta();
			dPR履歴ta.Fill(dtPR履歴);
			pgs処理.Maximum = dt操作履歴.Count;

			foreach (D99バックアップ.D99PR履歴Row row in dtPR履歴)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H06PR履歴 ("
				//    + " PR履歴No ,PR区分No ,PR名 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.PR履歴No + "','" + row.PR履歴No + "','" + row.PR名 + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','"
				//    + row.更新日時
				//    + "');");
				strデータ += "INSERT INTO H06PR履歴 ("
					+ " PR履歴No ,PR区分No ,PR名 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.PR履歴No + "','" + row.PR履歴No + "','" + FileCommon.EscapeSql(row.PR名) + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（15/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99プロモーション予定DataTable dtプロモーション予定 = new D99バックアップ.D99プロモーション予定DataTable();
			D99バックアップTableAdapters.D99プロモーション予定ta dプロモーション予定ta = new 顧客分析君.D99バックアップTableAdapters.D99プロモーション予定ta();
			dプロモーション予定ta.Fill(dtプロモーション予定);
			pgs処理.Maximum = dtプロモーション予定.Count;

			foreach (D99バックアップ.D99プロモーション予定Row row in dtプロモーション予定)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H07プロモーション予定 ("
				//    + " プロモーション予定No ,PR履歴No ,公開予定日 ,予定期間fr ,予定期間to ,総費用 ,対象商品総数 ,対象既存顧客総数 ,有効日数内の総売上 ,新規顧客獲得数 ,見込顧客獲得数 ,掘起し顧客数 ,内容 ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.プロモーション予定No + "','" + row.PR履歴No + "','" + row.公開予定日 + "','"
				//    + row.予定期間fr + "','" + row.予定期間to + "','" + row.総費用 + "','"
				//    + row.対象商品総数 + "','" + row.対象既存顧客総数 + "','" + row.有効日数内の総売上 + "','"
				//    + row.新規顧客獲得数 + "','" + row.見込顧客獲得数 + "','" + row.掘起し顧客数
				//    + row.内容 + "','" + row.備考 + "','" + row.登録スタッフNo + "','" + row.登録日時 + "','"
				//    + row.更新スタッフNo + "','" + row.更新日時
				//    + "');");
				strデータ += "INSERT INTO H07プロモーション予定 ("
					+ " プロモーション予定No ,PR履歴No ,公開予定日 ,予定期間fr ,予定期間to ,総費用 ,対象商品総数 ,対象既存顧客総数 ,有効日数内の総売上 ,新規顧客獲得数 ,見込顧客獲得数 ,掘起し顧客数 ,内容 ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.プロモーション予定No + "','" + row.PR履歴No + "','" + row.公開予定日 + "','"
					+ row.予定期間fr + "','" + row.予定期間to + "','" + row.総費用 + "','"
					+ row.対象商品総数 + "','" + row.対象既存顧客総数 + "','" + row.有効日数内の総売上 + "','"
					+ row.新規顧客獲得数 + "','" + row.見込顧客獲得数 + "','" + row.掘起し顧客数
					+ FileCommon.EscapeSql(row.内容) + "','" + FileCommon.EscapeSql(row.備考) + "','" 
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（16/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99プロモーション予定_対象広告DataTable dtプロモーション予定_対象広告 = new D99バックアップ.D99プロモーション予定_対象広告DataTable();
			D99バックアップTableAdapters.D99プロモーション予定_対象広告ta dプロモーション予定_対象広告ta = new 顧客分析君.D99バックアップTableAdapters.D99プロモーション予定_対象広告ta();
			dプロモーション予定_対象広告ta.Fill(dtプロモーション予定_対象広告);
			pgs処理.Maximum = dtプロモーション予定_対象広告.Count;

			foreach (D99バックアップ.D99プロモーション予定_対象広告Row row in dtプロモーション予定_対象広告)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H08プロモーション予定_対象広告 ("
				//    + " プロモーション予定_対象広告No ,PR履歴No ,広告No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.プロモーション予定_対象広告No + "','" + row.PR履歴No + "','" + row.広告No + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');");
				strデータ += "INSERT INTO H08プロモーション予定_対象広告 ("
					+ " プロモーション予定_対象広告No ,PR履歴No ,広告No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.プロモーション予定_対象広告No + "','" + row.PR履歴No + "','" + row.広告No + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（17/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99プロモーション予定_対象商品DataTable dtプロモーション予定_対象商品 = new D99バックアップ.D99プロモーション予定_対象商品DataTable();
			D99バックアップTableAdapters.D99プロモーション予定_対象商品ta dプロモーション予定_対象商品ta = new 顧客分析君.D99バックアップTableAdapters.D99プロモーション予定_対象商品ta();
			dプロモーション予定_対象商品ta.Fill(dtプロモーション予定_対象商品);
			pgs処理.Maximum = dt操作履歴.Count;

			foreach (D99バックアップ.D99プロモーション予定_対象商品Row row in dtプロモーション予定_対象商品)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H09プロモーション予定_対象商品 ("
				//    + " プロモーション予定_対象商品No ,PR履歴No ,商品No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.プロモーション予定_対象商品No + "','" + row.PR履歴No + "','" + row.商品No + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');");
				strデータ += "INSERT INTO H09プロモーション予定_対象商品 ("
					+ " プロモーション予定_対象商品No ,PR履歴No ,商品No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.プロモーション予定_対象商品No + "','" + row.PR履歴No + "','" + row.商品No + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（18/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99プロモーション予定_対象顧客DataTable dtプロモーション予定_対象顧客 = new D99バックアップ.D99プロモーション予定_対象顧客DataTable();
			D99バックアップTableAdapters.D99プロモーション予定_対象顧客ta dプロモーション予定_対象顧客ta = new 顧客分析君.D99バックアップTableAdapters.D99プロモーション予定_対象顧客ta();
			dプロモーション予定_対象顧客ta.Fill(dtプロモーション予定_対象顧客);
			pgs処理.Maximum = dtプロモーション予定_対象顧客.Count;

			foreach (D99バックアップ.D99プロモーション予定_対象顧客Row row in dtプロモーション予定_対象顧客)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H10プロモーション予定_対象顧客 ("
				//    + " プロモーション予定_対象顧客No ,PR履歴No ,顧客No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.プロモーション予定_対象顧客No + "','" + row.PR履歴No + "','" + row.顧客No + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');");
				strデータ += "INSERT INTO H10プロモーション予定_対象顧客 ("
					+ " プロモーション予定_対象顧客No ,PR履歴No ,顧客No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.プロモーション予定_対象顧客No + "','" + row.PR履歴No + "','" + row.顧客No + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（19/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99プロモーション実績DataTable dtプロモーション実績 = new D99バックアップ.D99プロモーション実績DataTable();
			D99バックアップTableAdapters.D99プロモーション実績ta dプロモーション実績ta = new 顧客分析君.D99バックアップTableAdapters.D99プロモーション実績ta();
			dプロモーション実績ta.Fill(dtプロモーション実績);
			pgs処理.Maximum = dtプロモーション実績.Count;

			foreach (D99バックアップ.D99プロモーション実績Row row in dtプロモーション実績)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H11プロモーション実績 ("
				//    + " プロモーション実績No ,PR履歴No ,公開実施日 ,実施期間fr ,実施期間to ,総費用 ,内容 ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.プロモーション実績No + "','" + row.PR履歴No + "','" + row.公開実施日 + "','" + row.実施期間fr + "','"
				//    + row.実施期間to + "','" + row.総費用 + "','" + row.内容 + "','" + row.備考 + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');");
				strデータ += "INSERT INTO H11プロモーション実績 ("
					+ " プロモーション実績No ,PR履歴No ,公開実施日 ,実施期間fr ,実施期間to ,総費用 ,内容 ,備考 ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.プロモーション実績No + "','" + row.PR履歴No + "','" + row.公開実施日 + "','" + row.実施期間fr + "','"
					+ row.実施期間to + "','" + row.総費用 + "','" + FileCommon.EscapeSql(row.内容) + "','" + FileCommon.EscapeSql(row.備考) + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（20/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99プロモーション実績_対象広告DataTable dtプロモーション実績_対象広告 = new D99バックアップ.D99プロモーション実績_対象広告DataTable();
			D99バックアップTableAdapters.D99プロモーション実績_対象広告ta dプロモーション実績_対象広告ta = new 顧客分析君.D99バックアップTableAdapters.D99プロモーション実績_対象広告ta();
			dプロモーション実績_対象広告ta.Fill(dtプロモーション実績_対象広告);
			pgs処理.Maximum = dtプロモーション実績_対象広告.Count;

			foreach (D99バックアップ.D99プロモーション実績_対象広告Row row in dtプロモーション実績_対象広告)
			{
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO H12プロモーション実績_対象広告 ("
				//    + " プロモーション実績_対象広告No ,PR履歴No ,広告No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
				//    + ") VALUES ('"
				//    + row.プロモーション実績_対象広告No + "','" + row.PR履歴No + "','" + row.広告No + "','"
				//    + row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');");
				strデータ += "INSERT INTO H12プロモーション実績_対象広告 ("
					+ " プロモーション実績_対象広告No ,PR履歴No ,広告No ,登録スタッフNo ,登録日時 ,更新スタッフNo ,更新日時 "
					+ ") VALUES ('"
					+ row.プロモーション実績_対象広告No + "','" + row.PR履歴No + "','" + row.広告No + "','"
					+ row.登録スタッフNo + "','" + row.登録日時 + "','" + row.更新スタッフNo + "','" + row.更新日時 + "');"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            // 計算データのバックアップ

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（21/32）";
            lbl処理詳細.Refresh();

            D05計算.D05RFMDataTable dtRFM = new D05計算.D05RFMDataTable();
            d05RFMta.Fill(dtRFM);
            pgs処理.Maximum = dtRFM.Count;
            foreach (D05計算.D05RFMRow row in dtRFM)
            {
				//sw.Write("INSERT INTO C02RFM (顧客No, R, F, M"
				//         + ")VALUES("
				//         + row.顧客No + "," + row.R + "," + row.F + "," + row.M + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C02RFM (顧客No, R, F, M"
				//     + ")VALUES("
				//     + row.顧客No + "," + row.R + "," + row.F + "," + row.M + ");");
				strデータ += "INSERT INTO C02RFM (顧客No, R, F, M"
					+ ")VALUES("
					+ row.顧客No + "," + row.R + "," + row.F + "," + row.M + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（22/32）";
            lbl処理詳細.Refresh();

            D05計算.D05お勧め商品_顧客毎DataTable dtお勧め商品_顧客毎 = new D05計算.D05お勧め商品_顧客毎DataTable();
            d05お勧め商品_顧客毎ta.Fill(dtお勧め商品_顧客毎);
            pgs処理.Maximum = dtお勧め商品_顧客毎.Count;
            foreach (D05計算.D05お勧め商品_顧客毎Row row in dtお勧め商品_顧客毎)
            {
				//sw.Write("INSERT INTO C03お勧め商品_顧客毎 (顧客No, 商品No, 類似度"
				//         + ")VALUES("
				//         + row.顧客No + "," + row.商品No + "," + row.類似度 + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C03お勧め商品_顧客毎 (顧客No, 商品No, 類似度"
				//     + ")VALUES("
				//     + row.顧客No + "," + row.商品No + "," + row.類似度 + ");");
				strデータ += "INSERT INTO C03お勧め商品_顧客毎 (顧客No, 商品No, 類似度"
					+ ")VALUES("
					+ row.顧客No + "," + row.商品No + "," + row.類似度 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（23/32）";
            lbl処理詳細.Refresh();

            D05計算.D05お勧め商品_RFMDataTable dtお勧め商品_RFM = new D05計算.D05お勧め商品_RFMDataTable();
            d05お勧め商品_RFMta.Fill(dtお勧め商品_RFM);
            pgs処理.Maximum = dtお勧め商品_RFM.Count;
            foreach (D05計算.D05お勧め商品_RFMRow row in dtお勧め商品_RFM)
            {
				//sw.Write("INSERT INTO C04お勧め商品_RFM (R, F, M, 商品No, ランク, 類似度"
				//         + ")VALUES("
				//         + row.R + "," + row.F + "," + row.M + "," + row.商品No + "," + row.ランク + "," + row.類似度 + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C04お勧め商品_RFM (R, F, M, 商品No, ランク, 類似度"
				//     + ")VALUES("
				//     + row.R + "," + row.F + "," + row.M + "," + row.商品No + "," + row.ランク + "," + row.類似度 + ");");
				strデータ += "INSERT INTO C04お勧め商品_RFM (R, F, M, 商品No, ランク, 類似度"
					+ ")VALUES("
					+ row.R + "," + row.F + "," + row.M + "," + row.商品No + "," + row.ランク + "," + row.類似度 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（24/32）";
            lbl処理詳細.Refresh();

            D08売れ筋商品.D08売れ筋商品_RFMDataTable dt売れ筋商品_RFM = new D08売れ筋商品.D08売れ筋商品_RFMDataTable();
            d08売れ筋商品_RFMta.Fill(dt売れ筋商品_RFM);
            pgs処理.Maximum = dt売れ筋商品_RFM.Count;
            foreach (D08売れ筋商品.D08売れ筋商品_RFMRow row in dt売れ筋商品_RFM)
            {
				//sw.Write("INSERT INTO C05売れ筋商品_RFM (R, F, M, 商品No, ランク, 販売数"
				//         + ")VALUES("
				//         + row.R + "," + row.F + "," + row.M + "," + row.商品No + "," + row.ランク + "," + row.販売数 + ");");
				//File.AppendAllText(一時ファイル,
				//    "INSERT INTO C05売れ筋商品_RFM (R, F, M, 商品No, ランク, 販売数"
				//     + ")VALUES("
				//     + row.R + "," + row.F + "," + row.M + "," + row.商品No + "," + row.ランク + "," + row.販売数 + ");");
				strデータ += "INSERT INTO C05売れ筋商品_RFM (R, F, M, 商品No, ランク, 販売数"
					+ ")VALUES("
					+ row.R + "," + row.F + "," + row.M + "," + row.商品No + "," + row.ランク + "," + row.販売数 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（25/32）";
            lbl処理詳細.Refresh();

            D07顧客動向表.D07顧客動向表2DataTable dt顧客動向表 = new D07顧客動向表.D07顧客動向表2DataTable();
            d07顧客動向表2ta.Fill(dt顧客動向表);
            pgs処理.Maximum = dt顧客動向表.Count;
            foreach (D07顧客動向表.D07顧客動向表2Row row in dt顧客動向表)
            {
				//sw.Write("INSERT INTO C06顧客動向表 (動向No, 年, 月, RFM種別, RFMランク, 顧客数, Color_R, Color_G, Color_B"
				//       + ")VALUES("
				//       + row.動向No + "," + row.年 + "," + row.月 + "," + row.RFM種別 + "," + row.RFMランク + "," + row.顧客数 + "," + row.Color_R + "," + row.Color_G + "," + row.Color_B + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C06顧客動向表 (動向No, 年, 月, RFM種別, RFMランク, 顧客数, Color_R, Color_G, Color_B"
				//    + ")VALUES("
				//    + row.動向No + "," + row.年 + "," + row.月 + "," + row.RFM種別 + "," + row.RFMランク + "," + row.顧客数 + "," + row.Color_R + "," + row.Color_G + "," + row.Color_B + ");");
				strデータ += "INSERT INTO C06顧客動向表 (動向No, 年, 月, RFM種別, RFMランク, 顧客数, Color_R, Color_G, Color_B"
					+ ")VALUES("
					+ row.動向No + "," + row.年 + "," + row.月 + "," + row.RFM種別 + "," + row.RFMランク + "," + row.顧客数 + "," 
					+ row.Color_R + "," + row.Color_G + "," + row.Color_B + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（26/32）";
            lbl処理詳細.Refresh();

            D05計算.D05顧客動向表_顧客DataTable dt顧客動向表_顧客 = new D05計算.D05顧客動向表_顧客DataTable();
            d05顧客動向表_顧客ta.Fill(dt顧客動向表_顧客);
            pgs処理.Maximum = dt顧客動向表_顧客.Count;
            foreach (D05計算.D05顧客動向表_顧客Row row in dt顧客動向表_顧客)
            {
				//sw.Write("INSERT INTO C07顧客動向表_顧客 (動向No, 顧客No"
				//         + ")VALUES("
				//         + row.動向No + "," + row.顧客No  + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C07顧客動向表_顧客 (動向No, 顧客No"
				//     + ")VALUES("
				//     + row.動向No + "," + row.顧客No  + ");");
				strデータ += "INSERT INTO C07顧客動向表_顧客 (動向No, 顧客No"
					+ ")VALUES("
					+ row.動向No + "," + row.顧客No + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（27/32）";
            lbl処理詳細.Refresh();

            D05計算.D05購買回数DataTable dt購買回数 = new D05計算.D05購買回数DataTable();
            d05購買回数ta.Fill(dt購買回数);
            pgs処理.Maximum = dt購買回数.Count;
            foreach (D05計算.D05購買回数Row row in dt購買回数)
            {
				//sw.Write("INSERT INTO C08購買回数 (顧客No, 商品No, 購買回数"
				//       + ")VALUES("
				//       + row.顧客No + "," + row.商品No + "," + row.購買回数 + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C08購買回数 (顧客No, 商品No, 購買回数"
				//    + ")VALUES("
				//    + row.顧客No + "," + row.商品No + "," + row.購買回数 + ");");
				strデータ += "INSERT INTO C08購買回数 (顧客No, 商品No, 購買回数"
					+ ")VALUES("
					+ row.顧客No + "," + row.商品No + "," + row.購買回数 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（28/32）";
            lbl処理詳細.Refresh();

            D05計算.D05購買回数の内積DataTable dt購買回数の内積 = new D05計算.D05購買回数の内積DataTable();
            d05購買回数の内積ta.Fill(dt購買回数の内積);
            pgs処理.Maximum = dt購買回数の内積.Count;
            foreach (D05計算.D05購買回数の内積Row row in dt購買回数の内積)
            {
				//sw.Write("INSERT INTO C09購買回数の内積 (計算元商品No, 計算先商品No, 購買回数の内積, 内積の絶対値"
				//       + ")VALUES("
				//       + row.計算元商品No + "," + row.計算先商品No + "," + row.購買回数の内積 + "," + row.内積の絶対値 + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C09購買回数の内積 (計算元商品No, 計算先商品No, 購買回数の内積, 内積の絶対値"
				//    + ")VALUES("
				//    + row.計算元商品No + "," + row.計算先商品No + "," + row.購買回数の内積 + "," + row.内積の絶対値 + ");");
				strデータ += "INSERT INTO C09購買回数の内積 (計算元商品No, 計算先商品No, 購買回数の内積, 内積の絶対値"
					+ ")VALUES("
					+ row.計算元商品No + "," + row.計算先商品No + "," + row.購買回数の内積 + "," + row.内積の絶対値 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（29/32）";
            lbl処理詳細.Refresh();

            D05計算.D05商品間の類似度DataTable dt商品間の類似度 = new D05計算.D05商品間の類似度DataTable();
            d05商品間の類似度ta.Fill(dt商品間の類似度);
            pgs処理.Maximum = dt商品間の類似度.Count;
            foreach (D05計算.D05商品間の類似度Row row in dt商品間の類似度)
            {
				//sw.Write("INSERT INTO C10商品間の類似度 (計算元商品No, 計算先商品No, 類似度"
				//       + ")VALUES("
				//       + row.計算元商品No + "," + row.計算先商品No + "," + row.類似度 + ");");
				//File.AppendAllText(一時ファイル, 
				//    "INSERT INTO C10商品間の類似度 (計算元商品No, 計算先商品No, 類似度"
				//    + ")VALUES("
				//    + row.計算元商品No + "," + row.計算先商品No + "," + row.類似度 + ");");
				strデータ += "INSERT INTO C10商品間の類似度 (計算元商品No, 計算先商品No, 類似度"
					+ ")VALUES("
					+ row.計算元商品No + "," + row.計算先商品No + "," + row.類似度 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（30/32）";
            lbl処理詳細.Refresh();

            D15FM分析.D15FMDataTable dtFM = new D15FM分析.D15FMDataTable();
            d15FMta.Fill(dtFM);
            pgs処理.Maximum = dtFM.Count;
            foreach (D15FM分析.D15FMRow row in dtFM)
            {
				//sw.Write("INSERT INTO C11FM (年月, 顧客No, F, M"
				//       + ")VALUES('"
				//       + row.年月 + "'," + row.顧客No + "," + row.F + "," + row.M + ");");
				//File.AppendAllText(一時ファイル,
				//    "INSERT INTO C11FM (年月, 顧客No, F, M"
				//    + ")VALUES('"
				//    + row.年月 + "'," + row.顧客No + "," + row.F + "," + row.M + ");");
				strデータ += "INSERT INTO C11FM (年月, 顧客No, F, M"
					+ ")VALUES('"
					+ row.年月 + "'," + row.顧客No + "," + row.F + "," + row.M + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//sw.Write("\r\n");
				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

                pgs処理.PerformStep();
            }

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

			lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（31/32）";
			lbl処理詳細.Refresh();

			D99バックアップ.D99TMP商品間の類似度DataTable dtTMP商品間の類似度 = new D99バックアップ.D99TMP商品間の類似度DataTable();
			d99TMP商品間の類似度ta.Fill(dtTMP商品間の類似度);
			pgs処理.Maximum = dtTMP商品間の類似度.Count;
			foreach (D99バックアップ.D99TMP商品間の類似度Row row in dtTMP商品間の類似度)
			{
				//File.AppendAllText(一時ファイル,
				//    "INSERT INTO C12TMP商品間の類似度 (計算先商品No, 類似度"
				//    + ")VALUES("
				//    + row.計算先商品No + "," + row.類似度 + ");");
				strデータ += "INSERT INTO C12TMP商品間の類似度 (計算先商品No, 類似度"
					+ ")VALUES("
					+ row.計算先商品No + "," + row.類似度 + ");"
					+ "\r\n";

				//FileCommon.ファイル書き込み(一時ファイル, strデータ);
				if (iRowCnt < 2000)
					iRowCnt++;
				else
				{
					FileCommon.ファイル書き込み(一時ファイル, strデータ);
					iRowCnt = 0;
					strデータ = "";
				}

				//File.AppendAllText(一時ファイル, "\r\n");
				//FileCommon.ファイル書き込み(一時ファイル, "\r\n");

				pgs処理.PerformStep();
			}

			iRowCnt = 0;
			if (strデータ != "")
			{
				FileCommon.ファイル書き込み(一時ファイル, strデータ);
				strデータ = "";
			}

            lbl処理詳細.Text = Properties.Resources.MSG_I_バックアップ処理中 + "（32/32）";
            lbl処理詳細.Refresh();

            // 圧縮
            string str一時ファイルgz = 一時ファイル + ".gz";
			if (File.Exists(str一時ファイルgz))
				File.Delete(str一時ファイルgz);

            FileStream compFileStrm = new FileStream(str一時ファイルgz, FileMode.Create);
            GZipStream gzipStrm = new GZipStream(compFileStrm, CompressionMode.Compress);

            //圧縮するファイルを開いて少しずつbufferに読み込む
            FileStream inFileStrm = new FileStream(一時ファイル, FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[5000];
            while (true)
            {
                int readSize = inFileStrm.Read(buffer, 0, buffer.Length);
                if (readSize == 0)
                    break;

                gzipStrm.Write(buffer, 0, readSize);
            }

            inFileStrm.Close();
            gzipStrm.Close();

			if (File.Exists(txt選択ファイル.Text))
				File.Delete(txt選択ファイル.Text);

			// ファイル名変更
			//File.Copy(一時ファイル, txt選択ファイル.Text, true);
			File.Move(str一時ファイルgz, txt選択ファイル.Text);

			//if (File.Exists(一時ファイル))
			//    File.Delete(一時ファイル);

        }

        private bool 復元()
        {
            lbl処理詳細.Text = Properties.Resources.MSG_I_復元処理中 + "（1/2）";
            lbl処理詳細.Refresh();
            pgs処理.Minimum = 1;
            pgs処理.Step = 1;

			//展開する書庫のパス
			//string gzipFile = @"C:\test.txt.gz";
			//展開先のファイル名
			//string outFile = @"C:\test1.txt";
			string 一時ファイル = string.Format(@"{0}{1}.csv", Path.GetTempPath(), DateTime.Now.ToString("yyyyMMddHHmmss"));

			try
			{
				FileStream gzipFileStrm = new FileStream(txt選択ファイル.Text, FileMode.Open, FileAccess.Read);
				GZipStream gzipStrm = new GZipStream(gzipFileStrm, CompressionMode.Decompress);
				FileStream outFileStrm = new FileStream(一時ファイル, FileMode.Create, FileAccess.Write);

				byte[] buffer = new byte[5000];
				while (true)
				{
					int readSize = gzipStrm.Read(buffer, 0, buffer.Length);
					if (readSize == 0)
						break;

					outFileStrm.Write(buffer, 0, readSize);
				}

				outFileStrm.Close();
				gzipStrm.Close();


				lbl処理詳細.Text = Properties.Resources.MSG_I_復元処理中 + "（2/2）";
				lbl処理詳細.Refresh();

				if (C05DBCommon.ExecuteNonQuery("EXEC SP_DROP_TABLE", Properties.Settings.Default.KB) == false)
					return false;

				if (C05DBCommon.ExecuteNonQuery("EXEC SP_CREATE_TABLE", Properties.Settings.Default.KB) == false)
					return false;

				//if (C02業務共通処理.ExecuteNonQuery("SET IDENTITY_INSERT H01販売履歴 ON", Properties.Settings.Default.KB) == false)
				//    return false;

				TextFieldParser tfp = new TextFieldParser(一時ファイル);
				long lng最大行数 = 0;
				while (!tfp.EndOfData)
				{
					lng最大行数++;
					tfp.ReadLine();
				}

				pgs処理.Maximum = (int)lng最大行数;

				tfp = new TextFieldParser(一時ファイル);
				while (!tfp.EndOfData)
				{
					string strInsert = tfp.ReadLine();
					if (strInsert.IndexOf("M02商品") > 0)
					{
						if (C05DBCommon.ExecuteNonQuery(
							"SET IDENTITY_INSERT M02商品 ON; " + strInsert + " SET IDENTITY_INSERT M02商品 OFF; ",
							Properties.Settings.Default.KB) == false)
							return false;
					}
					else if (strInsert.IndexOf("M03顧客") > 0)
					{
						if (C05DBCommon.ExecuteNonQuery(
							"SET IDENTITY_INSERT M03顧客 ON; " + strInsert + " SET IDENTITY_INSERT M03顧客 OFF; ",
							Properties.Settings.Default.KB) == false)
							return false;
					}
					else if (strInsert.IndexOf("M04属性") > 0)
					{
						if (C05DBCommon.ExecuteNonQuery(
							"SET IDENTITY_INSERT M04属性 ON; " + strInsert + " SET IDENTITY_INSERT M04属性 OFF; ",
							Properties.Settings.Default.KB) == false)
							return false;
					}
					else if (strInsert.IndexOf("M07スタッフ") > 0)
					{
						if (C05DBCommon.ExecuteNonQuery(
							"SET IDENTITY_INSERT M07スタッフ ON; " + strInsert + " SET IDENTITY_INSERT M07スタッフ OFF; ",
							Properties.Settings.Default.KB) == false)
							return false;
					}
					else if (strInsert.IndexOf("H01販売履歴") > 0)
					{
						if (C05DBCommon.ExecuteNonQuery(
							"SET IDENTITY_INSERT H01販売履歴 ON; " + strInsert + " SET IDENTITY_INSERT H01販売履歴 OFF; ",
							Properties.Settings.Default.KB) == false)
							return false;
					}
					else if (strInsert.IndexOf("H02コンタクト履歴") > 0)
					{
						if (C05DBCommon.ExecuteNonQuery(
							"SET IDENTITY_INSERT H02コンタクト履歴 ON; " + strInsert + " SET IDENTITY_INSERT H02コンタクト履歴 OFF; ",
							Properties.Settings.Default.KB) == false)
							return false;
					}
					else
					{
						if (C05DBCommon.ExecuteNonQuery(strInsert, Properties.Settings.Default.KB) == false)
							return false;
					}

					pgs処理.PerformStep();
				}

				//if (C02業務共通処理.ExecuteNonQuery("SET IDENTITY_INSERT dbo.KB2010 OFF", Properties.Settings.Default.KB) == false)
				//    return false;

				if (C05DBCommon.ExecuteNonQuery("EXEC SP_CREATE_INDEX", Properties.Settings.Default.KB) == false)
					return false;


				return true;
			}
			finally
			{
				File.Delete(一時ファイル);
			}
        }

        #endregion


        ////////////////////////////////////////////////////////////////////////
        // イベントハンドラ
        ////////////////////////////////////////////////////////////////////////
        #region イベントハンドラ

        private void _103計算状況_Load(object sender, EventArgs e)
        {
            try
            {
                if (mbtMode == 1)
                {
                    this.Text = Properties.Resources.MSG_TTL_バックアップ;
                    grp基本情報.Text = Properties.Resources.MSG_I_バックアップファイル;
                }
                else if (mbtMode == 2)
                {
                    this.Text = Properties.Resources.MSG_TTL_復元;
                    grp基本情報.Text = Properties.Resources.MSG_I_復元ファイル;
                }

                lbl処理詳細.Text = Properties.Resources.MSG_I_開始待ち;
            }
            catch (Exception ex)
            {
                C04システム共通.ErrorLog("_103処理状況", "_103計算状況_Load", ex);
            }
        }

        private void btn参照_Click(object sender, EventArgs e)
        {
            try
            {
                if (mbtMode == 1)
                {
                    SaveFileDialog fd = new SaveFileDialog();
                    fd.Filter = Application.ProductName + " " + Properties.Resources.MSG_I_バックアップファイル + "(*.2010)|*.2010";
                    if (fd.ShowDialog() != DialogResult.OK)
                        return;

                    txt選択ファイル.Text = fd.FileName;
                }
                else if (mbtMode == 2)
                {
                    OpenFileDialog fd = new OpenFileDialog();
                    fd.Filter = Application.ProductName + " " + Properties.Resources.MSG_I_バックアップファイル + "(*.2010)|*.2010";
                    if (fd.ShowDialog(this) == DialogResult.Cancel)
                        return;

                    txt選択ファイル.Text = fd.FileName;
                }
            }
            catch (Exception ex)
            {
                C04システム共通.ErrorLog("_103処理状況", "btn参照_Click", ex);
            }
        }

        private void btn開始_Click(object sender, EventArgs e)
        {
            try
            {
                if (IsValidate() == false)
                    return;

                if (mbtMode == 1)
                {
                    if (DialogResult.Yes != MessageBox.Show(string.Format(Properties.Resources.MSG_Q_Aを開始しますか
                        , Properties.Resources.MSG_TTL_バックアップ)
                        , this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                        return;

                    バックアップ();

                    C02業務共通処理.Insert操作履歴(this.Text, Properties.Resources.OPRT_009);

                    string msg = string.Format(Properties.Resources.MSG_I_Aが完了しました, Properties.Resources.MSG_TTL_バックアップ);
                    MessageBox.Show(msg, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else if (mbtMode == 2)
                {
                    if (DialogResult.Yes != MessageBox.Show(string.Format(Properties.Resources.MSG_Q_Aを開始しますか
                        , Properties.Resources.MSG_TTL_復元)
                        , this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
                        return;

                    if (復元() == true)
                    {
                        string msg = string.Format(Properties.Resources.MSG_I_Aが完了しました, Properties.Resources.MSG_TTL_復元);
                        MessageBox.Show(msg, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        string msg = string.Format(Properties.Resources.MSG_W_Aが失敗しました, Properties.Resources.MSG_TTL_復元);
                        MessageBox.Show(msg, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }

                    C02業務共通処理.Insert操作履歴(this.Text, Properties.Resources.OPRT_009);
                }

                lbl処理詳細.Text = Properties.Resources.MSG_TTL_完了;
            }
            catch (Exception ex)
            {
                C04システム共通.ErrorLog("_103処理状況", "btn開始_Click", ex);
            }
        }

        private void btnキャンセル_Click(object sender, EventArgs e)
        {
            try
            {
                this.Close();
            }
            catch (Exception ex)
            {
                C04システム共通.ErrorLog("_103処理状況", "btnキャンセル_Click", ex);
            }
        }

        #endregion



    }
}
