Vencimiento de un Producto en una aplicación de .Net CSharp y SQL Server

Esta solución puede aplicar dentro de un rango de 10 días. Aquí los pasos desde la creación de la tabla en SQL Server.

Creamos la tabla:


CREATE TABLE [dbo].[T_Productos](
[ID] [int] IDENTITY(1,1) NOT NULL,
[NombreProducto] [varchar](20) NULL,
[FechaVencimiento] [date] NULL,
 CONSTRAINT [PK_T_Productos] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


GO

Insertamos registros:


INSERT INTO T_Productos (NombreProducto,FechaVencimiento)
VALUES ('PRODUCTO 1','2016-03-30')

INSERT INTO T_Productos (NombreProducto,FechaVencimiento)
VALUES ('PRODUCTO 2','2016-03-30')

INSERT INTO T_Productos (NombreProducto,FechaVencimiento)
VALUES ('PRODUCTO 3','2016-03-25')

INSERT INTO T_Productos (NombreProducto,FechaVencimiento)
VALUES ('PRODUCTO 4','2016-03-29')

INSERT INTO T_Productos (NombreProducto,FechaVencimiento)

VALUES ('PRODUCTO 4','2016-03-20')

Creamos Form en Visual Studio:



Código del botón:

 private void button1_Click(object sender, EventArgs e)
        {
            SqlCommand cmm = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            int vConteo = 0;
         
            using (SqlConnection cnn = new SqlConnection("Data Source=RIGOLUIS\\SQLEXPRESS;Initial Catalog=SolucionesNet;Persist Security Info=True;User ID=sa;Password=*****"))
            {
                cnn.Open();
                cmm.Connection = cnn;
                cmm.CommandType = CommandType.Text;
                cmm.CommandText = "SELECT ID,NombreProducto,FechaVencimiento, (DATEDIFF(DAY,GETDATE(),FechaVencimiento)) AS [Dias] FROM T_Productos";
                da.SelectCommand = cmm;
                da.Fill(ds);
                vConteo = ds.Tables[0].Rows.Count-1;
                if (vConteo > 0)
                {
                   for(int i = 0;i<= vConteo;i++)
                    {
                    dataGridView1.Rows.Add(ds.Tables[0].Rows[i].ItemArray[0].ToString(), ds.Tables[0].Rows[i].ItemArray[1].ToString(), Convert.ToDateTime(ds.Tables[0].Rows[i].ItemArray[2].ToString()).ToShortDateString(), ds.Tables[0].Rows[i].ItemArray[3].ToString());
                     
                    }

                   foreach(DataGridViewRow fila in dataGridView1.Rows)
                    {
                        if(Convert.ToInt32(fila.Cells["Dias"].Value.ToString()) < 0)
                        {
                            fila.DefaultCellStyle.BackColor = Color.Red;
                        }
                        else
                        {
                            fila.DefaultCellStyle.BackColor = Color.Yellow;

                        }

                    }
                }


            }

        }

Al realizar esto, vemos que los que tienes como días negativos son menores a 0, son productos vencidos. Los que están en amarillo esta por vencer en una tolerancia de menor a 10 días.



1 comentario: