public CopyClubRecord(CLUBRecordWithPhoto club)
        {
            _Club = club;
            //建立一個社團 / 社團學生的物件
            //並且傳入新社團的相關資料

            //本物件的功能
            //就是傳入新社團的ID
            //而本物件依據ID來建立學生記錄


        }
        void BGW_DoWork(object sender, DoWorkEventArgs e)
        {
            //取得社團資料
            List<CLUBRecordWithPhoto> ClubPrimaryList = _AccessHelper.Select<CLUBRecordWithPhoto>(string.Format("UID = '{0}'", this.PrimaryKey));
            if (ClubPrimaryList.Count != 1)
            {
                //如果取得2門以上 或 沒取得社團時
                e.Cancel = true;
                return;
            }

            ClubPrimary = ClubPrimaryList[0];
        }
        void BGW_DoWork(object sender, DoWorkEventArgs e)
        {

            //檢查目標學年期,是否有相同名稱之社團資料
            //如果有則移除該社團
            //並透過覆製功能進行新增動作
            removelist = CheckOldReMoveClub();
            Dictionary<string, List<SCJoin>> studentSCJDic = new Dictionary<string, List<SCJoin>>();

            if (StudentCopy)
            {
                //取得原有社團之學生社團記錄
                ScjStudentList = _AccessHelper.Select<SCJoin>(string.Format("ref_club_id in ('{0}')", string.Join("','", ClubAdmin.Instance.SelectedSource)));

                foreach (SCJoin each in ScjStudentList)
                {
                    if (!studentSCJDic.ContainsKey(each.RefClubID))
                    {
                        studentSCJDic.Add(each.RefClubID, new List<SCJoin>());
                    }
                    studentSCJDic[each.RefClubID].Add(each);
                }
            }

            Dictionary<string, List<CadresRecord>> studentCadreDic = new Dictionary<string, List<CadresRecord>>();
            if (CadresCopy)
            {
                //取得原有社團之學生社團記錄
                CadreStudentList = _AccessHelper.Select<CadresRecord>(string.Format("ref_club_id in ('{0}')", string.Join("','", ClubAdmin.Instance.SelectedSource)));

                foreach (CadresRecord each in CadreStudentList)
                {
                    if (!studentCadreDic.ContainsKey(each.RefClubID))
                    {
                        studentCadreDic.Add(each.RefClubID, new List<CadresRecord>());
                    }
                    studentCadreDic[each.RefClubID].Add(each);
                }
            }

            int LogSchoolYear = 90;
            int LogSemester = 1;

            if (Copylist.Count > 0)
            {
                LogSchoolYear = Copylist[0].SchoolYear;
                LogSemester = Copylist[0].Semester;
            }

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("已進行複製社團作業:");
            sb.AppendLine(string.Format("由學年度「{0}」學期「{1}」複製至學年度「{2}」學期「{3}」", LogSchoolYear.ToString(), LogSemester.ToString(), _SchoolYear.ToString(), _Semester.ToString()));
            if (StudentCopy)
            {
                sb.AppendLine("(已勾選複製學生選項)");
            }
            sb.AppendLine("");
            sb.AppendLine("新學期社團清單如下:");

            foreach (CLUBRecordWithPhoto each in Copylist)
            {
                #region 複製社團基本資料

                //如果是重覆社團則不處理
                if (removelist.Contains(each.ClubName))
                    continue;

                //是否複製學生
                if (StudentCopy)
                {
                    CopyClubRecord new_ccr = new CopyClubRecord(each);
                    if (studentSCJDic.ContainsKey(each.UID))
                    {
                        new_ccr.SetSCJ(studentSCJDic[each.UID]);
                    }
                }

                CLUBRecordWithPhoto cr = new CLUBRecordWithPhoto();
                cr.About = each.About;
                cr.ClubNumber = each.ClubNumber;
                cr.ClubCategory = each.ClubCategory;
                cr.ClubName = each.ClubName;
                cr.TotalNumberHours = each.TotalNumberHours;

                cr.Grade1Limit = each.Grade1Limit;
                cr.Grade2Limit = each.Grade2Limit;
                cr.Grade3Limit = each.Grade3Limit;
                cr.Grade4Limit = each.Grade4Limit;
                cr.Grade5Limit = each.Grade5Limit;

                cr.Grade1BoyLimit = each.Grade1BoyLimit;
                cr.Grade2BoyLimit = each.Grade2BoyLimit;
                cr.Grade3BoyLimit = each.Grade3BoyLimit;
                cr.Grade4BoyLimit = each.Grade4BoyLimit;
                cr.Grade5BoyLimit = each.Grade5BoyLimit;

                cr.Grade1GirlLimit = each.Grade1GirlLimit;
                cr.Grade2GirlLimit = each.Grade2GirlLimit;
                cr.Grade3GirlLimit = each.Grade3GirlLimit;
                cr.Grade4GirlLimit = each.Grade4GirlLimit;
                cr.Grade5GirlLimit = each.Grade5GirlLimit;

                cr.Location = each.Location;
                cr.Photo1 = each.Photo1;
                cr.Photo2 = each.Photo2;
                cr.RefTeacherID = each.RefTeacherID;
                cr.RefTeacherID2 = each.RefTeacherID2;
                cr.RefTeacherID3 = each.RefTeacherID3;

                cr.TotalNumberHours = each.TotalNumberHours;
                cr.FullPhase = each.FullPhase;
                cr.Domain = each.Domain;
                cr.Type = each.Type;
                cr.Formal = each.Formal;

                if (CadresCopy)
                {
                    //社長,副社長
                    cr.President = each.President;
                    cr.VicePresident = each.VicePresident;

                    //處理其它幹部

                    //newInsertCadresList
                }

                //使用者所設定之學年度學期
                cr.SchoolYear = _SchoolYear;
                cr.Semester = _Semester;
                newInsertList.Add(cr);

                sb.AppendLine(string.Format("學年度「{0}」學期「{1}」社團名稱「{2}」", cr.SchoolYear.ToString(), cr.Semester.ToString(), cr.ClubName));


                #endregion

            }

            if (newInsertList.Count > 0)
            {

                //新增之社團ID
                List<string> IDList = new List<string>();

                try
                {
                    IDList = _AccessHelper.InsertValues(newInsertList);
                }
                catch (Exception ex)
                {
                    SmartSchool.ErrorReporting.ReportingService.ReportException(ex);
                    e.Cancel = true;
                    return;
                }

                FISCA.LogAgent.ApplicationLog.Log("社團", "複製社團", sb.ToString());

                //取得社團
                List<CLUBRecordWithPhoto> ListInsertRecord = _AccessHelper.Select<CLUBRecordWithPhoto>(string.Format("UID in('{0}')", string.Join("','", IDList)));
                //如果有勾選複製社團
                //要把複製的社團取得ID,並且比隊其對應的原社團
                if (StudentCopy)
                {
                    #region 複製社團學生

                    if (IDList.Count != 0)
                    {

                        //建立學生的社團記錄Record
                        //所要複製的社團
                        List<CopyClubRecord> new_list = new List<CopyClubRecord>();
                        foreach (CLUBRecordWithPhoto each1 in Copylist)
                        {
                            CopyClubRecord new_ccr = new CopyClubRecord(each1);
                            if (studentSCJDic.ContainsKey(each1.UID))
                            {
                                new_ccr.SetSCJ(studentSCJDic[each1.UID]);
                                new_list.Add(new_ccr);
                            }
                        }

                        foreach (CLUBRecordWithPhoto each in ListInsertRecord)
                        {
                            foreach (CopyClubRecord each2 in new_list)
                            {
                                if (each.ClubName == each2._Club.ClubName)
                                {
                                    each2._new_Club = each;
                                    break;
                                }
                            }
                        }

                        //新增社團清單
                        insertSCJList = new List<SCJoin>();
                        foreach (CopyClubRecord each in new_list)
                        {
                            insertSCJList.AddRange(each.GetNewSCJoinList());
                        }

                        try
                        {
                            _AccessHelper.InsertValues(insertSCJList);
                        }
                        catch (Exception ex)
                        {
                            SmartSchool.ErrorReporting.ReportingService.ReportException(ex);
                            e.Cancel = true;
                            return;
                        }
                    }

                    #endregion
                }

                if (CadresCopy)
                {
                    #region 複製社團幹部 -2

                    if (IDList.Count != 0)
                    {
                        List<CopyClubRecord> new_list = new List<CopyClubRecord>();
                        foreach (CLUBRecordWithPhoto each1 in Copylist)
                        {
                            CopyClubRecord new_ccr = new CopyClubRecord(each1);
                            if (studentCadreDic.ContainsKey(each1.UID))
                            {
                                new_ccr.SetSCJ(studentCadreDic[each1.UID]);
                                new_list.Add(new_ccr);
                            }
                        }

                        foreach (CLUBRecordWithPhoto each in ListInsertRecord)
                        {
                            foreach (CopyClubRecord each2 in new_list)
                            {
                                if (each.ClubName == each2._Club.ClubName)
                                {
                                    each2._new_Club = each;
                                    break;
                                }
                            }
                        }

                        //新增社團清單
                        insertCadreList = new List<CadresRecord>();
                        foreach (CopyClubRecord each in new_list)
                        {
                            insertCadreList.AddRange(each.GetNewCadresList());
                        }

                        try
                        {
                            _AccessHelper.InsertValues(insertCadreList);
                        }
                        catch (Exception ex)
                        {
                            SmartSchool.ErrorReporting.ReportingService.ReportException(ex);
                            e.Cancel = true;
                            return;
                        }
                    }

                    #endregion
                }
            }
        }