public void procInsertar(string tabla, string campo, TextBox txt)
 {
     //se recibe el codigo por medio de la consulta realizada en la clase de sentencias
     procDesbloquear();
     string tbl = tabla;
     string cmp1 = campo;
     TextBox txt1 = txt;
     int codigo = cn.funcCodigoMax(tbl, cmp1);
     txt1.Text = codigo.ToString();
     txt1.Enabled = false;
 }
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            int    Nivel  = 1;
            int    Padre  = 0;
            string Indice = "";
            bool   Res;
            int    Codigo = 0;

            try
            {
                //revisa que el nombre de la cuenta este escrito y este seleccionado el tipo de cuenta, de lo contrario no deja avanzar
                if (txtNombreCuenta.Text.Length == 0)
                {
                    MessageBox.Show("Debe de ingresar el nombre de la cuenta", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else if (cmbTipoCuenta.SelectedIndex == 0)
                {
                    MessageBox.Show("Debe de seleccionar el tipo de cuenta contable", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else if (txtNombreCuenta.Text.Length > 75)
                {
                    MessageBox.Show("El nombre no puede tener mas de 75 caracteres", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                //Crea un nodo nuevo con el texto introducido
                TreeNode ANode = new TreeNode(txtNombreCuenta.Text.Trim());
                string   NodoP, Nodo;
                NodoP = Nodo = "";
                //Comprueba si existen nodos
                if (tvwCuentas.Nodes.Count == 0)
                {   //Si no hay lo añade al nodo raíz
                    NodoP  = "";
                    Nodo   = ANode.Text;
                    Codigo = 1; Nivel = 1; Padre = 0;
                    tvwCuentas.Nodes.Add(ANode);
                }
                else
                {
                    Nodo = ANode.Text;
                    //si se selecciono algun nodo
                    if (tvwCuentas.SelectedNode != null)
                    {
                        //Añadimos el nodo al treeView
                        tvwCuentas.SelectedNode.Nodes.Add(ANode);
                        //Guardamos el padre, nivel, indice y codigo del nodo para despues guardarlo con la consulta
                        Padre  = int.Parse(tvwCuentas.SelectedNode.Name.ToString());
                        Nivel  = int.Parse(tvwCuentas.SelectedNode.Tag.ToString()) + 1;
                        Indice = funcRecuperaindiceNodo(tvwCuentas.SelectedNode);
                        //obtiene el codigo usando la funcion de cuando se selecciona un nodo
                        Codigo = Cn.funcCodigoMax(int.Parse(Indice));
                        //si la longitud del codigo es la misma del camino obtenido se concatena un 1 sino se suma un 1
                        if (Codigo.ToString().Length == Indice.Length)
                        {
                            string Aux = Indice + "1";
                            Codigo = int.Parse(Aux);
                        }
                        else
                        {
                            Codigo++;
                        }
                    }
                    else //si no se selecciona un nodo se llama a su respectiva funcion
                    {
                        Codigo = Cn.funcCodigoMaxNivel0();
                        Nivel  = 1; Padre = 0;
                        MessageBox.Show("La cuenta se va agregar en la raíz ya que no se seleccionó ninguna", "AGREGADO A RAIZ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        tvwCuentas.Nodes.Add(ANode);
                    }
                }

                /*MessageBox.Show("codigo es: " + Codigo);
                 * MessageBox.Show("el nivel es " + Nivel);
                 * MessageBox.Show("el papa es " + Padre);*/
                //se llama a la funcion para hacer la consulta con los datos obtenidos
                Res = Cn.funcAgregar(Codigo, txtNombreCuenta.Text.ToString(), Nivel, Padre, int.Parse(cmbIdTipoCuenta.SelectedItem.ToString()));
                //se muestra su mensaje dependiendo de la respuesta obtenida
                if (Res == true)
                {
                    MessageBox.Show("La cuenta se agrego correctamente", "EXITO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("La cuenta no se agrego correctamente", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                //LIMPIA
                txtNombreCuenta.Text        = "";
                cmbTipoCuenta.SelectedIndex = 0;
                //refresca el treeview
                procCargaDatos();
                tvwCuentas.ExpandAll();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error en btnNodo_Click", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }