none
Procedimiento o función ' SP_ddlDepartamentos ' espera el parámetro ' Pais ' , que no fue suministrada . RRS feed

  • Pregunta

  • Buenos dias amigos

    Perdon que sea tan puntual en la pregunta. pero que es este error que me sale no lo entiendo que sea

    de ante mano muchas gracias por la ayuda

    martes, 13 de enero de 2015 16:47

Todas las respuestas

  • Esta es la raiz del error

    martes, 13 de enero de 2015 18:00
  • Francisco,

    El error es por demás descriptivo. Tienes un procedimiento o función llamado  SP_ddlDepartamentos que requiere de un parámetro @País que tu no estás proporcionándole. Ta falta algo como

    command.Parameters.AddWithValue("@Pais", "MiPais");


    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú


    martes, 13 de enero de 2015 18:06
  • Hola William gracias por contestar ya agregue lo que me dijiste y no me funciona

    este es mi codigo

    Codigo BL

     public List<Departamento> GellDepartamentoByPais(Departamento pDepartamento)
            {
                List<Departamento> list = new List<Departamento>();
    
                using (SqlConnection conn = new SqlConnection(_StringDeConexion))
                {
                    conn.Open();
    
                    SqlCommand _Command = new SqlCommand("SP_ddlDepartamentos", conn);
                    _Command.CommandType = CommandType.StoredProcedure;
    
                    _Command.Parameters.AddWithValue("@Pais", "Pais");
    
                    SqlDataReader _reader = _Command.ExecuteReader();
    
                    while (_reader.Read())
                    {
                        list.Add(LoadDepartamento(_reader));
                    }
    
                }
    
                return list;
            }
    
            public Departamento LoadDepartamento(IDataReader reader)
            {
                Departamento item = new Departamento();
    
                item.Departamento1 = Convert.ToString(reader["Departamento"]);
    
                return item;
            }
    
    
    
            public List<Municipio> GellMunicipioByDepartamento(Municipio pMunicipio)
            {
                List<Municipio> list = new List<Municipio>();
    
                using (SqlConnection conn = new SqlConnection(_StringDeConexion))
                {
                    conn.Open();
    
                    SqlCommand _Command = new SqlCommand("SPddlMunicipioSocios", conn);
                    _Command.CommandType = CommandType.StoredProcedure;
    
                    _Command.Parameters.AddWithValue("@Departamento", "Departamento");
    
                    SqlDataReader _reader = _Command.ExecuteReader();
    
                    while (_reader.Read())
                    {
                        list.Add(LoadMunicipio(_reader));
                    }
    
                }
    
                return list;
            }
    
            public Municipio LoadMunicipio(IDataReader reader)
            {
                Municipio item = new Municipio();
    
                item.Municipio1 = Convert.ToString(reader["Municipio"]);
    
    
                return item;
            }

    Codigo de UI

    protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)
            {
                //int id = Convert.ToInt32(ddlPais.SelectedValue.ToString());
    
                //var result = ComunDB.Contexto.Departamentoes.Where(x => x.IdPais == id).ToString();
            }
    
            protected void ddlDepartamento_SelectedIndexChanged(object sender, EventArgs e)
            {
                string id = ddlDepartamento.SelectedValue;
    
                LoadComboDepartamento(_Departamento.Pais);
            }
    
            protected void ddlMunicipio_SelectedIndexChanged(object sender, EventArgs e)
            {
                string MuniSocio = ddlMunicipio.SelectedValue;
    
                LoadComboMunicipio(_Municipio.Departamento);
            }
    
            private void LoadComboPais()
            {
                ddlPais.DataSource = edsPaisSocio;
    
                if (ddlPais.Items.Count != 0)
                {
                    string PaisSocio = ddlPais.SelectedValue;
                }
            }
    
            public void LoadComboDepartamento(string Pais)
            {
                ddlDepartamento.DataSourceID = Nothing;
                ddlDepartamento.DataSource = _RegionDAL.GellDepartamentoByPais(_Departamento);
    
                if (ddlDepartamento.Items.Count != 0)
                {
                    string DepartamentoSocio = ddlDepartamento.SelectedValue;
    
                    LoadComboMunicipio(DepartamentoSocio);
                }
                else
                {
                    ddlMunicipio.Items.Clear();
                }
            }
    
            private void LoadComboMunicipio(string DepartamentoSocios)
            {
                ddlMunicipio.DataSourceID = Nothing;
                ddlMunicipio.DataSource = _RegionDAL.GellMunicipioByDepartamento(_Municipio);
    
                if (ddlMunicipio.Items.Count != 0)
                {
                    string MunicipiosSocios = ddlMunicipio.SelectedValue;
                }
            }

    no se que pueda ser

    martes, 13 de enero de 2015 20:15
  • Francisco,

    Cuando mencionas que no funciona, ¿es que persiste el mismo error? o ¿no retorna registros las consultas?

    Fíjate en la firma

    public List<Departamento> GellDepartamentoByPais(Departamento pDepartamento)

    Entiendo que el objetivo del método es devolver los departamentos por "x" país que le pases como parámetro, sin embargo tu le pasas como parámetro un departamento. Espero sea sólo un tema de confusión con los nombres de los parámetros.

    Ahora, en la línea donde mandas el parámetro. Se entiende que el método recibe un valor, el mismo que pensé que sería el que agregues a la colección parameters del objeto Command, sin embargo pones un valor "en duro". Si no devuelve nada es que quizá no haya departamentos cuyo país sea "Pais".

    _Command.Parameters.AddWithValue("@Pais", "Pais");


    Por eso es importante que menciones si te presenta algún error o simplemente no devuelve registros. Si es el segundo caso ya debes de estar imaginando lo que sucede.


    martes, 13 de enero de 2015 20:49
  • Hola william exacto lo que dices no me devuelve valores los borra en la primera vez que carga me muestra los valores pero una vez selecciona una opcion del droptdownlist se borran asi mira

    porque sucede perdon que tanto molesto ya que esto es nuevo para muchisimas gracias por compartir lo que sabes con la comunidad

    martes, 13 de enero de 2015 21:04
  • ¿Qué es _Departamento.Pais?

    Lo que necesitas es trabajar los dropdownlist en cascada DropDownList en cascada

    martes, 13 de enero de 2015 21:12
  • hola _Deparatamento es la clase de donde estoy llamando el dato pais

    martes, 13 de enero de 2015 21:15