none
restar menos uno a un campo con un valor en sql server y visual studio c# RRS feed

  • Pregunta

  • saludos,

    tengo una tabla llamada autobuses, tengo un campo llamado: asientos otro campo: disponibilidad, en el campo asientos tengo un valor de 30, en disponibilidad tengo un valor de 30 como hago para cuando pulse el boton en mi formulario de c# me le reste uno a disponibilidad y que cuando llegue a 0 vuelva a 30? 

    jueves, 22 de noviembre de 2018 18:37

Respuestas

  • Hola joel201022:

    La opción más simple es enviar la consult. (Si utilizas ADO.Net, puede ser algo así)

    update autobuses 
    set disponiblidad = case when disponiblidad>0 then (disponiblidad -1) 
    else 30 
    end

    O realizarlo mediante un procedimiento almacenado.

    create procedure sp_Disponibilidad 
    as 
    begin try
    	update autobuses 
    			set disponiblidad = case when disponiblidad>0 
    					then (disponiblidad -1) 
    					else
    						30 end;
    end try
    begin catch
    	throw;
    end catch
    return

    y luego consumirlo.

    try
    {
         connection.Open();
         SqlCommand Query = new SqlCommand("dbo.sp_disponibilidad", connection);
                        
    Query.CommandType = CommandType.StoredProcedure;
    Query.ExecuteNonQuery();
    }
    catch (SqlException e) { throw e; }

    • Marcado como respuesta joel201022 jueves, 22 de noviembre de 2018 20:29
    jueves, 22 de noviembre de 2018 18:59

Todas las respuestas

  • Hola joel201022:

    La opción más simple es enviar la consult. (Si utilizas ADO.Net, puede ser algo así)

    update autobuses 
    set disponiblidad = case when disponiblidad>0 then (disponiblidad -1) 
    else 30 
    end

    O realizarlo mediante un procedimiento almacenado.

    create procedure sp_Disponibilidad 
    as 
    begin try
    	update autobuses 
    			set disponiblidad = case when disponiblidad>0 
    					then (disponiblidad -1) 
    					else
    						30 end;
    end try
    begin catch
    	throw;
    end catch
    return

    y luego consumirlo.

    try
    {
         connection.Open();
         SqlCommand Query = new SqlCommand("dbo.sp_disponibilidad", connection);
                        
    Query.CommandType = CommandType.StoredProcedure;
    Query.ExecuteNonQuery();
    }
    catch (SqlException e) { throw e; }

    • Marcado como respuesta joel201022 jueves, 22 de noviembre de 2018 20:29
    jueves, 22 de noviembre de 2018 18:59
  • Hola   Javi Fernández F

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que nos encontramos realizando la revisión del inconveniente que presentas.

    Te daremos una respuesta a la brevedad posible.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    jueves, 22 de noviembre de 2018 19:55
    Moderador
  • Gracias Pablo, supongo que se han mezclado nuestras respuestas. Este hilo es para la pregunta de joel201022
    jueves, 22 de noviembre de 2018 20:08
  • me funciono pero tengo una duda, cuando me referia a 30 me refiero a lo que tengo en ese campo, que cuando llegue a 0 me ponga el valor que tenga en asientos

    joel

    jueves, 22 de noviembre de 2018 21:05
  • Hola Joel201022:

    Entonces el else asientos end:

    O lo que es lo mismo, pones en disponibilidad, lo que tiene asientos.

    Case es una expresión que evalúa unas condiciones, y devuelve un valor.

    Es lo mismo que if (disponiblidad>0) { disponibilidad=disponibilidad -1 ;}

    else  {disponibilidad = asientos;}

    Case:

    https://docs.microsoft.com/es-es/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017

    Espero te ayude

    jueves, 22 de noviembre de 2018 21:26