none
Al finalizar el mes el contador regrese a 1 RRS feed

  • Pregunta

  • Que tal.

    Estoy haciendo un proyecto, en el cual contabiliza los folios emitidos por día, y lo que busco es que al termino del mes,sea día 30/31 incluso el 28 de Febrero, este contador reinicie a 1,dejo mi código de ejemplo:

           

     protected void aumentoButton_Click(object sender, EventArgs e)
        {
            int count = int.Parse(folioTextBox.Text);
            count++;
            folioTextBox.Text = count.ToString();
            fechaTextBox.Text = DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss");

            conexion.Open();
            string fol = folioTextBox.Text;
            string fecha = fechaTextBox.Text;
            string cadena = "insert into Folios(Folio, Mes) values ('" + fol + "','" + fecha + "')";
            SqlCommand comando = new SqlCommand(cadena, conexion);
            comando.ExecuteNonQuery();
            respuestaLabel.Text = ("Los datos se guardaron correctamente");

            conexion.Close();
        }

    y el ejemplo de mi base de datos:

    

    Podría alguien orientarme un poco?
    Saludos!

    lunes, 7 de octubre de 2019 15:25

Todas las respuestas

  • hola

    Tienes que recuperar el ultimo folio consultando la db, para eso primero realizas un SELECT con el MAX y en el filtro por mes

    MONTH (Transact-SQL)

    la funcion quedaria

    private int GetLastFolio(int mes)
    {
        string sql = @"SELECT MAX(Folio) FROM <Tabla> WHERE MONTH(Mes) = @mes"; 
        using (SqlConnection conn = new SqlConnection("connection string")) 
        { 
            conn.Open(); 
    
            SqlCommand cmd = new SqlCommand(sql, conn); 
            cmd.Parameters.AddWithValue("@mes", mes); 
    
            return Convert.ToInt32(cmd.ExecuteScalar()); 
    
        } 
    }

    entonces lo usas

    protected void aumentoButton_Click(object sender, EventArgs e)
    {
        int folio = GetLastFolio(DateTime.Now.Month);
    
        string sql = "insert into Folios(Folio, Mes) values (@folio, @fecha)"; 
        using (SqlConnection conn = new SqlConnection("connection string")) 
        { 
            conn.Open(); 
    
            SqlCommand cmd = new SqlCommand(sql, conn); 
            cmd.Parameters.AddWithValue("@folio", folio); 
            cmd.Parameters.AddWithValue("@fecha", DateTime.Now); 
    
            cmd.ExecuteNonQuery(); 
    
        } 
    
        respuestaLabel.Text = ("Los datos se guardaron correctamente");
    }

    usa siempre parametros, concatener los valores en un string no es buena practica

    saludos

    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 7 de octubre de 2019 15:57