none
problema con comprobacion de registros RRS feed

  • Pregunta

  • buenas tengo un problema y la verdad que no estoy entendiendo si podrian darme una ayuda, tengo dos metodos uno comprueba si exite un registro, el otro inserta el registro de cuerdo a la comprobación. necesito comprobar tres campos que son horario de inicio, sala asignada o otra sala asignada con la misma hora de inicio, el error que me salta al darle click en el boton de agregar es "Cannot call methods on nvarchar."

    este es el primer metodo

     

        public bool Existe(string nomb)
    {
        using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ESTADOCURSOConnectionString"].ConnectionString))
        {
            string query = "SELECT COUNT(*) FROM Cursos WHERE Sala_curso=@DDLsalaasig AND Horario_ini_curso=@TBhoraini.Text OR Otros_sala_curso=@TBotrasala AND Horario_ini_curso=@TBhoraini.Text";
            SqlCommand cmd = new SqlCommand(query, conn);
            cmd.Parameters.AddWithValue("@TBhoraini", TBhoraini.Text);
            cmd.Parameters.AddWithValue("@DDLsalaasig", DDLsalaasig.Text);
            cmd.Parameters.AddWithValue("@TBotrasala", TBotrasala.Text);
            conn.Open();

            int count = Convert.ToInt32(cmd.ExecuteScalar());
            if (count == 0)
                return false;
            else
                return true;
        }
    }

    y este es el segundo donde agrego con un boton los campos insertados

    protected void Bguardcurso_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
               {     
        using (SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ESTADOCURSOConnectionString"].ConnectionString))
            {
                cn.Open();
                if (!Existe(TBnomievento.Text))
    {
        string query = "INSERT INTO Cursos (Nombre, Estado_curso, Modo_curso, Horas_catedra_curso, Fecha_ini_curso, Objeto_curso, Localidad_curso, Dpto_local_curso, Sede_local_curso, Sede_otros_curso, Sala_curso, Otros_sala_curso, Tipo_de_Plantel, Fecha_fin_curso, Horario_ini_curso, Horario_fin_curso, Responsable, Dirigido_curso, Cupo_alumno) VALUES (@TBnomievento, @DDLestado, @DDLtipoevento, @TBtotalhoras, @TBfechaini, @TBojetocurso, @DDLlocalidad, @DDLdepa, @DDLsede, @DDLotrasede, @DDLsalaasig, @TBotrasala, @DDLplantel, @TBfechafin, @TBhoraini, @TBhorafin, @DDLresponsa, @DDLdirigidoa, @TBcupo)";
        SqlCommand cmd = new SqlCommand(query, cn);
        cmd.Parameters.AddWithValue("@TBnomievento", TBnomievento.Text);
        cmd.Parameters.AddWithValue("@DDLestado", DDLestado.Text);
        cmd.Parameters.AddWithValue("@DDLtipoevento", DDLtipoevento.Text);
        cmd.Parameters.AddWithValue("@TBtotalhoras", TBtotalhoras.Text);
        cmd.Parameters.AddWithValue("@TBfechaini", TBfechaini.Text);
        cmd.Parameters.AddWithValue("@TBojetocurso", TBojetocurso.Text);
        cmd.Parameters.AddWithValue("@DDLlocalidad", DDLlocalidad.Text);
        cmd.Parameters.AddWithValue("@DDLdepa", DDLdepa.Text);
        cmd.Parameters.AddWithValue("@DDLsede", DDLsede.Text);
        cmd.Parameters.AddWithValue("@DDLotrasede", DDLotrasede.Text);
        cmd.Parameters.AddWithValue("@DDLsalaasig", DDLsalaasig.Text);
        cmd.Parameters.AddWithValue("@TBotrasala", TBotrasala.Text);
        cmd.Parameters.AddWithValue("@DDLplantel", DDLplantel.Text);
        cmd.Parameters.AddWithValue("@TBfechafin", TBfechafin.Text);
        cmd.Parameters.AddWithValue("@TBhoraini", TBhoraini.Text);
        cmd.Parameters.AddWithValue("@TBhorafin", TBhorafin.Text);
        cmd.Parameters.AddWithValue("@DDLresponsa", DDLresponsa.Text);
        cmd.Parameters.AddWithValue("@DDLdirigidoa", DDLdirigidoa.Text);
        cmd.Parameters.AddWithValue("@TBcupo", TBcupo.Text);

        cmd.ExecuteNonQuery();
    }
    else
    {
       //registro si existe
        Lavisocurso.Text = "Este curso ya existe favor verifique";
    }

            }
                Lavisocurso.Text = "El curso fue creado con exito";
            }

        }

    Me podrian guiar.

    Saludos

    domingo, 2 de diciembre de 2012 15:16

Respuestas

  • hola

    el problema esta en como defines los parametros, porque les has puesto .Text como si fueran controles

    esto que marco

    string query = "SELECT COUNT(*) FROM Cursos WHERE Sala_curso=@DDLsalaasig AND Horario_ini_curso=@TBhoraini.Text OR Otros_sala_curso=@TBotrasala AND Horario_ini_curso=@TBhoraini.Text";

    es lo incorrecto

    porque si despues defines

     cmd.Parameters.AddWithValue("@TBhoraini", TBhoraini.Text);

    alli no pones el .Text

    resumen elimina los .Text de la query y valida que todos los parametros estan definidos con el nombre correcto

    ademas en la query veo 4 parametros pero en el AddWithValue() solo 3

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 6 de diciembre de 2012 8:06

Todas las respuestas

  • En que linea te muestra el error?

    Otra cosa cuando publiques código utiliza la opcion insertar bloque de código para que se nos facilite leer el código.

    Saludos.


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    domingo, 2 de diciembre de 2012 16:53
  • int count = Convert.ToInt32(cmd.ExecuteScalar());  en esta linea aparece el error, me imagino que seria en el este bloque
        public bool Existe(string nomb)
    {
        using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ESTADOCURSOConnectionString"].ConnectionString))
        {
            string query = "SELECT COUNT(*) FROM Cursos WHERE Sala_curso=@DDLsalaasig AND Horario_ini_curso=@TBhoraini.Text OR Otros_sala_curso=@TBotrasala AND Horario_ini_curso=@TBhoraini.Text";
            SqlCommand cmd = new SqlCommand(query, conn);
            cmd.Parameters.AddWithValue("@TBhoraini", TBhoraini.Text);
            cmd.Parameters.AddWithValue("@DDLsalaasig", DDLsalaasig.Text);
            cmd.Parameters.AddWithValue("@TBotrasala", TBotrasala.Text);
            conn.Open();
    
            int count = Convert.ToInt32(cmd.ExecuteScalar());
            if (count == 0)
                return false;
            else
                return true;
        }
    }

    miércoles, 5 de diciembre de 2012 19:22
  • Según veo el código c# esta bien.

    Has tratado de ejecutar la query en el sql server magnament studio para comprobar si funciona? Porque según estuve viendo el error  se produce por usar palabras reservadas de sql asi que el problema puede estar en la query.

    Saludos.


    Cristian Torres
    Blog Cristian Torres

    El Salvador - San Salvador

    jueves, 6 de diciembre de 2012 3:09
  • hola

    el problema esta en como defines los parametros, porque les has puesto .Text como si fueran controles

    esto que marco

    string query = "SELECT COUNT(*) FROM Cursos WHERE Sala_curso=@DDLsalaasig AND Horario_ini_curso=@TBhoraini.Text OR Otros_sala_curso=@TBotrasala AND Horario_ini_curso=@TBhoraini.Text";

    es lo incorrecto

    porque si despues defines

     cmd.Parameters.AddWithValue("@TBhoraini", TBhoraini.Text);

    alli no pones el .Text

    resumen elimina los .Text de la query y valida que todos los parametros estan definidos con el nombre correcto

    ademas en la query veo 4 parametros pero en el AddWithValue() solo 3

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 6 de diciembre de 2012 8:06