//Обновление строки
        private void UpdateRecord()
        {
            if (dgvPersCard.CurrentRow == null)
            {
                return;
            }
            PersCard persCard = dgvPersCard.CurrentRow.DataBoundItem as PersCard;

            if (persCard == null)
            {
                MessageBox.Show("Не знайдена картка для оновлення", "Помилка");
                return;
            }
            fmPersCardEdit fmEdit = new fmPersCardEdit(EnumFormMode.Edit, "Зміна картки");

            fmEdit.SetData(persCard);
            if (fmEdit.ShowDialog() == DialogResult.OK)
            {
                persCard = fmEdit.GetData();
                string error;
                if (!_repository.ModifyCard(persCard, out error))
                {
                    MessageBox.Show("Помилка оновлення картки.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }
                RefreshTable();
            }
        }
        //Вставка строки
        private void InsertRecord()
        {
            fmPersCardEdit fmEdit = new fmPersCardEdit(EnumFormMode.Insert, "Створення картки");

            if (fmEdit.ShowDialog() == DialogResult.OK)
            {
                string   error;
                PersCard card = fmEdit.GetData();
                int      id   = _repository.AddCard(card, out error);
                if (id == 0)
                {
                    MessageBox.Show("Помилка додавання рядка.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }

                StringBuilder sql = new StringBuilder();

                List <Child> childs = fmEdit.GetChildren();
                foreach (Child child in childs)
                {
                    child.Child_PersCard_Id = id;
                    sql.AppendLine(_repoChild.CreateStrInsertChild(child));
                }

                List <CardStatus> getCardStatuses = fmEdit.GetCardStatus();
                foreach (CardStatus cardStatus in getCardStatuses)
                {
                    sql.AppendLine(_repoCardStatus.CreateStrInsertCardStatus(cardStatus));
                }

                List <TaxRelief> getTaxReliefs = fmEdit.GetTaxRelief();
                foreach (TaxRelief taxRelief in getTaxReliefs)
                {
                    sql.AppendLine(_repoTaxRelief.CreateStrInsertTaxRelief(taxRelief));
                }

                List <Disability> getDisabilities = fmEdit.GetDisability();
                foreach (Disability disability in getDisabilities)
                {
                    sql.AppendLine(_repoDisability.CreateStrInsertDisability(disability));
                }

                List <CardSpecExp> getCardSpecExps = fmEdit.GetCardSpecExp();
                foreach (CardSpecExp cardSpecExp in getCardSpecExps)
                {
                    sql.AppendLine(_repoCardSpecExp.CreateStrInsertCardSpecExp(cardSpecExp));
                }

                if (!sqlScipt.ExecuteSqlScript(sql.ToString(), out error))
                {
                    MessageBox.Show("Помилка оновлення.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }

                RefreshTable();
                dgvPersCard.SetPositionRow <PersCard>("PersCard_Id", id.ToString());
            }
        }
        //Вставка строки
        private void InsertRecord()
        {
            fmPersCardEdit fmEdit = new fmPersCardEdit(EnumFormMode.Insert, "Створення картки");

            if (fmEdit.ShowDialog() == DialogResult.OK)
            {
                string   error;
                PersCard card = fmEdit.GetData();

                if (!_repository.AddCard(card, out error))
                {
                    MessageBox.Show("Помилка додавання картки.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }
                RefreshTable();
            }
        }
        //Обновление строки
        private void UpdateRecord()
        {
            if (dgvPersCard.CurrentRow == null)
            {
                return;
            }
            PersCard persCard = dgvPersCard.CurrentRow.DataBoundItem as PersCard;

            if (persCard == null)
            {
                MessageBox.Show("Не знайдений рядок для оновлення", "Помилка");
                return;
            }
            string       error;
            List <Child> children = _repoChild.GetChildByParams(persCard.PersCard_Id, out error);

            if (error != string.Empty)
            {
                MessageBox.Show("Помилка отримання інтервалів дітей.\nТехнічна інформація: " + error, "Помилка");
                return;
            }
            List <TaxRelief> taxReliefs = _repoTaxRelief.GetTaxReliefByParams(persCard.PersCard_Id, out error);

            if (error != string.Empty)
            {
                MessageBox.Show("Помилка отримання інтервалів пільг.\nТехнічна інформація: " + error, "Помилка");
                return;
            }
            List <CardStatus> cardStatuses = _repoCardStatus.GetCardStatusByParams(persCard.PersCard_Id, out error);

            if (error != string.Empty)
            {
                MessageBox.Show("Помилка отримання інтервалів статуса.\nТехнічна інформація: " + error, "Помилка");
                return;
            }
            List <Disability> disabilities = _repoDisability.GetDisabilitiesByParams(persCard.PersCard_Id, out error);

            if (error != string.Empty)
            {
                MessageBox.Show("Помилка отримання інтервалів інвалідності.\nТехнічна інформація: " + error, "Помилка");
                return;
            }
            List <CardSpecExp> cardSpecExps = _repoCardSpecExp.GetCardSpecExpByParams(persCard.PersCard_Id, out error);

            if (error != string.Empty)
            {
                MessageBox.Show("Помилка отримання інтервалів спецстажів.\nТехнічна інформація: " + error, "Помилка");
                return;
            }

            fmPersCardEdit fmEdit = new fmPersCardEdit(EnumFormMode.Edit, "Зміна картки");

            fmEdit.SetData(persCard);
            fmEdit.SetChildren(children);
            fmEdit.SetCardStatus(cardStatuses);
            fmEdit.SetTaxRelief(taxReliefs);
            fmEdit.SetDisability(disabilities);
            fmEdit.SetCardSpecExp(cardSpecExps);

            if (fmEdit.ShowDialog() == DialogResult.OK)
            {
                persCard = fmEdit.GetData();
                if (!_repository.ModifyCard(persCard, out error))
                {
                    MessageBox.Show("Помилка оновлення рядка.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }

                StringBuilder sql = new StringBuilder();
                sql.AppendLine(_repoChild.CreateStrDeleteChildByParam(persCard.PersCard_Id));
                List <Child> childs = fmEdit.GetChildren();
                foreach (Child child in childs)
                {
                    sql.AppendLine(_repoChild.CreateStrInsertChild(child));
                }

                sql.AppendLine(_repoCardStatus.CreateStrDeleteCardStatusByParam(persCard.PersCard_Id));
                List <CardStatus> getCardStatuses = fmEdit.GetCardStatus();
                foreach (CardStatus cardStatus in getCardStatuses)
                {
                    sql.AppendLine(_repoCardStatus.CreateStrInsertCardStatus(cardStatus));
                }

                sql.AppendLine(_repoTaxRelief.CreateStrDeleteTaxReliefByParam(persCard.PersCard_Id));
                List <TaxRelief> getTaxReliefs = fmEdit.GetTaxRelief();
                foreach (TaxRelief taxRelief in getTaxReliefs)
                {
                    sql.AppendLine(_repoTaxRelief.CreateStrInsertTaxRelief(taxRelief));
                }

                sql.AppendLine(_repoDisability.CreateStrDeleteDisabilityByParam(persCard.PersCard_Id));
                List <Disability> getDisabilities = fmEdit.GetDisability();
                foreach (Disability disability in getDisabilities)
                {
                    sql.AppendLine(_repoDisability.CreateStrInsertDisability(disability));
                }

                sql.AppendLine(_repoCardSpecExp.CreateStrDeleteCardSpecExpByParam(persCard.PersCard_Id));
                List <CardSpecExp> getCardSpecExps = fmEdit.GetCardSpecExp();
                foreach (CardSpecExp cardSpecExp in getCardSpecExps)
                {
                    sql.AppendLine(_repoCardSpecExp.CreateStrInsertCardSpecExp(cardSpecExp));
                }

                if (!sqlScipt.ExecuteSqlScript(sql.ToString(), out error))
                {
                    MessageBox.Show("Помилка оновлення.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }
                RefreshTable();
            }
        }