private void btnNormal_Click(object sender, EventArgs e) //일반 계좌 조회
        {
            dgvMember2.Columns.Clear();

            CommonUtil.AddGridTextColumn(dgvMember2, "계좌 번호", "NAccountNum", 120);
            CommonUtil.AddGridTextColumn(dgvMember2, "생성 날짜", "DateCreated", 120);
            CommonUtil.AddGridTextColumn(dgvMember2, "고객 번호", "CustomerNum");
            CommonUtil.AddGridTextColumn(dgvMember2, "고객 이름", "CustomerName");
            CommonUtil.AddGridTextColumn(dgvMember2, "계좌 종류", "KindOfAcc");
            CommonUtil.AddGridTextColumn(dgvMember2, "비밀번호", "Pwd");
            CommonUtil.AddGridTextColumn(dgvMember2, "현재 잔액", "CurrentMoney");

            try
            {
                NormalAccountDB db = new NormalAccountDB();
                DataTable       dt = db.GetEveryData(CustomerNum);
                if (dt != null)
                {
                    dgvMember2.DataSource = dt;
                }
                db.Dispose();
            }
            catch (Exception)
            {
                MessageBox.Show("계좌 조회에 실패했습니다.");
            }
        }
        public bool CheckOutAccount()     //출금은 무조건 일반 계좌에서만 되기에 일반 계좌 db를 갔다온다
        {
            NormalAccountDB db = new NormalAccountDB();
            DataTable       dt = db.GetEveryData(CustomerNum);

            db.Dispose();
            try
            {
                if (dt != null)     //하나라도 일반 계좌가 있을 떄 비교하는 것
                {
                    StringBuilder sb = new StringBuilder();
                    if (txtOutAccount.Text.Trim().Equals(dt.Rows[0]["NAccountNum"].ToString()))        //일반계정의 계좌번호가 입력한 것과 같을 때
                    {
                        // txtOutAccount.BackColor = Color.Green;
                    }
                    else
                    {
                        sb.Append("귀하의 일반 계좌에 존재하지 않는 계좌번호입니다. \n");
                        MessageBox.Show(sb.ToString());
                        return(false);
                    }
                    if (txtOutPwd.Text.Trim().Equals(dt.Rows[0]["Pwd"].ToString()))            //일반계정의 계좌 비밀번호가 입력한 것과 같을 때
                    {
                        //   txtOutPwd.BackColor = Color.Green;
                    }
                    else
                    {
                        sb.Append("일치하지 않는 계좌 비밀번호입니다.");
                        MessageBox.Show(sb.ToString());
                        return(false);
                    }

                    return(true);
                }
                //계좌가 하나도 없을 때는??
                else
                {
                    MessageBox.Show("귀하의 계좌에 일반 계좌가 없습니다. 일반 계좌를 우선 개설해주세요.");
                    return(false);
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
        private void frmSending_Load(object sender, EventArgs e)
        {
            lblAlert.Text = "출금 계좌를 먼저 선택해주셔야합니다.";

            db = new NormalAccountDB();

            dt2 = db.WhenYouLoadfrmSending(CustomerNum);        //출금계좌, 예금 계좌, 적금 계좌 콤보박스에 바인딩시키기 위함
            db.Dispose();

            if (dt2 != null)
            {
                IterationRemoval(dt2, "NAccountNum", cbxOutAcc);        //출금 계좌에 바인딩
                IterationRemoval(dt2, "RecentlySentTo", cbxRecently);   //최근 목록에 바인딩
                IterationRemoval(dt2, "DAccountNum", cbxDepositAcc);    //예금 계좌에 바인딩
                IterationRemoval(dt2, "SAccountNum", cbxSavingAcc);     //적금 계좌에 바인딩
            }
            else
            {
                MessageBox.Show("이체 정보를 가져오지 못했습니다. 잠시 후 다시 시도해주세요.");
                return;
            }
        }
        private void btnNewAccount_Click(object sender, EventArgs e)        //계좌 생성 버튼 클릭
        {
            //출금 계좌와 신규 계좌 비밀번호들이 4자리가 아닐 때

            if (cbxKindOfAccount.SelectedItem.ToString().Length < 1)        //계좌 종류 반드시 선택하게하기
            {
                MessageBox.Show("계좌의 종류는 반드시 선택해주셔야합니다.");
                return;
            }
            if (txtNewPwd.Text.Length < 1 || txtCheckNewPwd.Text.Length < 1)        //신규 계좌 정보 꼭 입력하게 하기
            {
                MessageBox.Show("신규 계좌 정보는 반드시 입력해주셔야합니다.");
                return;
            }
            if (cbxKindOfAccount.SelectedItem.ToString() == "일반 계좌")
            {
                if (txtNewPwd.Text.Length != 4)
                {
                    MessageBox.Show("계좌의 비밀번호들은 4자리여야만 합니다.");
                    return;
                }
            }
            else
            {
                if (txtOutPwd.TextLength != 4 || txtNewPwd.Text.Length != 4)
                {
                    MessageBox.Show("계좌의 비밀번호들은 4자리여야만 합니다.");
                    return;
                }
            }

            if (cbxKindOfAccount.SelectedItem.ToString() == "일반 계좌")
            {
                //일반 계좌에 연결
                NormalAccountDB db = new NormalAccountDB();

                if (!db.Insert(accountinfo))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                    return;
                }
                db.Dispose();
            }
            else if (cbxKindOfAccount.SelectedItem.ToString() == "예금 계좌")
            {
                //가입기간, 출금계좌, 비번, 예치금 입력여부 체크
                if (cbxduration.Text.Length < 1 || txtOutAccount.Text.Length < 1 || txtOutPwd.Text.Length < 1 || txtAmountOfDeposit.Text.Length < 1)
                {
                    MessageBox.Show(@"예금 계좌의 경우 가입 기간, 출금계좌, 
                                     출금계좌의 비밀번호,예치금은 필수 입력입니다.");
                    return;
                }

                //출금 계좌와 비번이 맞는지 확인하는 함수 호출
                if (!CheckOutAccount())
                {
                    return;
                }

                //현재 일반 계좌에서 해당 에치금을 보낼 수 있는지 부터 체크
                NormalAccountDB n            = new NormalAccountDB();
                DataTable       dt           = n.GetCurrentMoney(txtOutAccount.Text);
                string          currentMoney = dt.Rows[0][0].ToString();                      //현재 일반계좌 잔액
                if (Convert.ToInt32(currentMoney) < Convert.ToInt32(txtAmountOfDeposit.Text)) //예치금이 잔액보다 크면 걸러내기
                {
                    MessageBox.Show("출금 계좌의 잔액보다 많은 금액은 예금할 수 없습니다.");
                    return;
                }
                if (!n.UpdateSender(txtAmountOfDeposit.Text, txtOutAccount.Text))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                }


                //내가 내 계좌내에 보낸 것도 이체 내역에 저장할까?? 고민중
                //예금 계좌에 연결
                DepositAccountDB db = new DepositAccountDB();
                if (!db.Insert(depositInfo))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                    return;
                }
                db.Dispose();
            }
            else if (cbxKindOfAccount.SelectedItem.ToString() == "적금 계좌")
            {
                //가입기간, 매회 납입금액, 출금 계좌, 비번 체크
                if (cbxduration.Text.Length < 1 || txtpayPerMonth.Text.Length < 1 ||
                    txtOutAccount.Text.Length < 1 || txtOutPwd.Text.Length < 1)
                {
                    MessageBox.Show(@"적금 계좌의 경우 가입 기간, 매회 납입 금액, 출금계좌, 
                                     출금계좌의 비밀번호는 필수 입력입니다.");
                    return;
                }

                if (!CheckOutAccount())      //출금 계좌와 비번이 맞는지 확인하는 함수 호출
                {
                    return;
                }
                //적금 계좌에 연결
                SavingDB db = new SavingDB();

                if (!db.Insert(savingInfo))
                {
                    MessageBox.Show("실행 도중 오류가 발생하였습니다.");
                    return;
                }
                db.Dispose();
            }
            else
            {
                MessageBox.Show("반드시 계좌 종류를 선택하셔야합니다.");
                return;
            }

            MessageBox.Show("계좌 생성이 완료되었습니다.");
            this.Close();
        }