Foros del Web » Programando para Internet » ASPX (.net) »

problema llamandoa stored procedure desde C#

Estas en el tema de problema llamandoa stored procedure desde C# en el foro de ASPX (.net) en Foros del Web. Hola a to2!!! Tengo un metodo en el que se debe actualizar la cantidad total de productos de cada tipo de producto, para esto dentro ...
  #1 (permalink)  
Antiguo 14/04/2011, 07:44
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta problema llamandoa stored procedure desde C#

Hola a to2!!!
Tengo un metodo en el que se debe actualizar la cantidad total de productos de cada tipo de producto, para esto dentro del metodo llamo a 3 stored procedures, uno que me devuelva todos lso tipos de productos, otro que dado el tipo de producto, em devuelva to2 los productos de ese tipo, y otro que me actualice la cantidad total de cada tipo de producto. Todo esto lo hago con el codigo sgte, el cual me da un error que no se como resolver, me dice que ya hay un datareader abierto asociado a la linea Command1.ExecuteScalar():

public void ActualizarCantidadesTotales()
{
try
{
if (fConnection.State != ConnectionState.Open)
fConnection.Open();
}
catch (Exception ex)
{
throw new TException(TErrorsMessages.ConnectionEstablishFail ed, ex.Message);
}

SqlCommand Command = new SqlCommand("spSelectProductsClasifiers", fConnection);
Command.CommandType = CommandType.StoredProcedure;

SqlDataReader result = Command.ExecuteReader();
while (result.Read())
{
fID = Convert.ToInt32(result["Id"]);
SqlCommand Command1 = new SqlCommand("spTotalAmountOfProductsByProductClasif ier", fConnection);
Command1.CommandType = CommandType.StoredProcedure;
Command1.Parameters.Add("@IDClasificador", SqlDbType.Char).Value = fID;
Command1.Parameters.Add(new SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));

Command1.ExecuteScalar(); //aqui es donde me sennala el error
fCantTotal = Convert.ToInt32(Command1.Parameters[1].Value);

SqlCommand Command2 = new SqlCommand("spAddProductsToTotalAmount", fConnection);
Command2.CommandType = CommandType.StoredProcedure;
Command2.Parameters.Add("@TotalAmount", SqlDbType.Char).Value = fCantTotal;
Command2.Parameters.Add("@ID", SqlDbType.Char).Value = fID;
Command2.ExecuteNonQuery();
}

fConnection.Close();
}

Alguno de ustedes sabe que esta mal en mi codigo, si hay que agregar algo o si hay algo incorrecto?
  #2 (permalink)  
Antiguo 15/04/2011, 08:11
 
Fecha de Ingreso: marzo-2007
Mensajes: 103
Antigüedad: 17 años, 1 mes
Puntos: 1
Respuesta: problema llamandoa stored procedure desde C#

Un datareader deja la conexion ocupada y de forma exclusiva, asi que al intentar usar otro la conexion simplemente no se puede abrir.

Por que no ejecutas todo el codigo en un solo SP ?, la otra opcion seria almacenar todos los resultados de la 1 consulta primero y luego ejectutar la segunda y luego la 3...
__________________
Julio César Guzmán Góngora
Microsoft Certified Professional
[email protected]
[email protected]
  #3 (permalink)  
Antiguo 18/04/2011, 08:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 56
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: problema llamandoa stored procedure desde C#

Hola!!!
hice lo que me dijistes, unifiqué el codigo en un solo stored procedure y asi me quite el lio que me estaba dando con el datareader, y ya me funciona!!!
Gracias!!!

Etiquetas: procedure, stored, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:09.