Principales respuestas
problema con comprobacion de registros

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
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
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 -
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; } }
-
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 -
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