/// <summary>
        /// Evernto do botão excluir do formPais
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (bindingSourcePais.Count == 0)
            {
                Util_Msg.atencao("Não há Registro Para Excluir!");
                return;
            }
            pais = bindingSourcePais.Current as Pais;
            try
            {
                paisDados.delete(pais);
                Util_Msg.aviso("Registro Excluido com Sucesso!");
                Util.botaoExcluir(this);

                //removo o item atual da lista
                bindingSourcePais.RemoveCurrent();
                //passo para o proximo registro do bind caso exista
                if (bindingSourcePais.Count > 1)
                {
                    bindingSourcePais.MoveNext();
                }
            }
            catch (Exception ex)
            {
                Util_Msg.erro("Não Foi Possivel Excluir o Registro! \n" + ex.Message);
                Util_Log.log(ex.Message);
            }
        }
 /// <summary>
 /// Evento do botão salvar
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnSalvar_Click(object sender, EventArgs e)
 {
     //se for inserir
     if (flag == 1)
     {
         salvar();
         if (valida())
         {
             try
             {
                 paisDados.insert(pais);
                 Util_Msg.aviso(Util.MENSAGEM_SUCESSO);
                 Util.botaoSalvar(this);
             }
             catch (Exception ex)
             {
                 Util_Msg.erro(Util.MENSAGEM_ERRO + ex.Message);
                 Util_Log.log(ex.Message);
                 return;
             }
         }
         else
         {
             return;
         }
     }
     //se for anterar
     else if (flag == 2)
     {
         alterar();
         if (valida())
         {
             try
             {
                 paisDados.update(pais);
                 Util_Msg.aviso(Util.MENSAGEM_SUCESSO);
                 Util.botaoSalvar(this);
             }
             catch (Exception ex)
             {
                 Util_Msg.erro(Util.MENSAGEM_ERRO + ex.Message);
                 Util_Log.log(ex.Message);
                 return;
             }
         }
         else
         {
             return;
         }
     }
 }
        /// <summary>
        /// Método para fazer transação com mais de uma tabela
        /// </summary>
        /// <param name="commandType"></param>
        /// <param name="sql"></param>
        public void transacaoSql(CommandType commandType, string sql)
        {
            sqlCommand                = sqlConnection.CreateCommand();
            sqlCommand.CommandType    = commandType;
            sqlCommand.CommandText    = sql;
            sqlCommand.CommandTimeout = 7200;
            sqlCommand.Transaction    = sqlTransaction;

            foreach (SqlParameter sqlParameter in sqlParametros)
            {
                sqlCommand.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));
            }
            try
            {
                sqlCommand.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                Util_Log.log(ex.Message);
                throw;
            }
        }
        public void insert(Pesquisa pesquisa, CampoPesquisaCollection campoPesquisa)
        {
            string sql;

            try
            {
                acessaBanco.abrirTransacao();
                CriaStringSql criaStringSqlPesquisa = new CriaStringSql("tblPesquisa");
                //adiciono os campo da insert da capa da pesquisa
                criaString.addCampo(UKEY, UKEY);
                criaString.addCampo(CODIGO_PESQUISA, CODIGO_PESQUISA);
                criaString.addCampo(NOME_PESQUISA, NOME_PESQUISA);
                criaString.addCampo(TELA_PESQUISA, TELA_PESQUISA);
                criaString.addCampo(RELATORIO, RELATORIO);
                criaString.addCampo(SELECT_PESQUISA, SELECT_PESQUISA);

                //limpo os paramtros da coleção e começo adicionar paramtros da capa
                acessaBanco.limpaParametros();
                acessaBanco.adicionaParametros(UKEY, pesquisa.Ukey);
                acessaBanco.adicionaParametros(CODIGO_PESQUISA, pesquisa.CodigoPesquisa);
                acessaBanco.adicionaParametros(NOME_PESQUISA, pesquisa.NomePesquisa);
                acessaBanco.adicionaParametros(TELA_PESQUISA, pesquisa.TelaPesquisa);
                acessaBanco.adicionaParametros(RELATORIO, pesquisa.Relatorio);
                acessaBanco.adicionaParametros(SELECT_PESQUISA, pesquisa.SelectPesquisa);

                //crio a string de insert e adiciono ela em uma lista do tipo string
                sql = criaString.insert();
                acessaBanco.transacaoSql(CommandType.Text, sql);
                //crio outra instancia do objeto de criar stringsql e passo a tabela de campos da pesquisa

                CriaStringSql criaStringCampo = new CriaStringSql("tblCampoPesquisa");

                //adiciono os campo da insert dos campos da pesquisa
                criaStringCampo.addCampo(UKEY_CAMPO, UKEY_CAMPO);
                criaStringCampo.addCampo(TABELA_CAMPO, TABELA_CAMPO);
                criaStringCampo.addCampo(CAMPO, CAMPO);
                criaStringCampo.addCampo(NOME_CAMPO, NOME_CAMPO);
                criaStringCampo.addCampo(OPERADOR_CAMPO, OPERADOR_CAMPO);
                criaStringCampo.addCampo(TIPO_CAMPO, TIPO_CAMPO);
                criaStringCampo.addCampo(PESQUISA_UKEY, PESQUISA_UKEY);

                //cria a sql de insert de campos
                sql = criaStringCampo.insert();

                //laço para percorrer a lista de campos passado como parametro e adiciona
                foreach (var campo in campoPesquisa)
                {
                    CampoPesquisa cp = new CampoPesquisa();
                    cp = campo;
                    acessaBanco.limpaParametros();
                    acessaBanco.adicionaParametros(UKEY_CAMPO, cp.Ukey);
                    acessaBanco.adicionaParametros(TABELA_CAMPO, cp.TabelaCampo);
                    acessaBanco.adicionaParametros(CAMPO, cp.Campo);
                    acessaBanco.adicionaParametros(NOME_CAMPO, cp.NomeCampo);
                    acessaBanco.adicionaParametros(OPERADOR_CAMPO, cp.OperadorCampo);
                    acessaBanco.adicionaParametros(TIPO_CAMPO, cp.TipoCampo);
                    acessaBanco.adicionaParametros(PESQUISA_UKEY, cp.Pesquisa_ukey);

                    //chamo o metodo para executar o comando
                    acessaBanco.transacaoSql(CommandType.Text, sql);
                }
                //faço o commiti dos dados no banco
                acessaBanco.commit();
            }
            catch (Exception ex)
            {
                Util_Log.log(ex.Message);
                throw;
            }
        }