حولت افهم الكود واضعه ولكن خبرتى لا تكفى مع العلمان الاضفه تتم عن طريق دتا جرد فيو كما واضح فى الصوره
كود :
void add_Penalty()
{
if (DGV_Penalty.CurrentRow != null)
{
DataGridViewRow dgvRow = DGV_Penalty.CurrentRow;
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.Text;
string Save = "";
if (dgvRow.Cells[2].Value == DBNull.Value)//Insert
{
Save = "INSERT INTO TB_Penalty(ID,Nam,Of_Month,Days,Number,Start,Fin,Totl,Mon_th,Dat,Emp_ID)VALUES (@ID,@Nam,@Of_Month,@Days,@Number,@Start,@Fin,@Totl,@Mon_th,@Dat,@Emp_ID)";
Cmd = new SqlCommand(Save, DB.Con);
Cmd.Parameters.AddWithValue("@ID", DB.GetMaxIDColumn("TB_Penalty", "ID").ToString());
}
else //update
{
Save = "UPDATE TB_Penalty SET Nam = @Nam,Of_Month = @Of_Month,Days = @Days,Number = @Number,Start = @Start,Fin = @Fin,Totl = @Totl,Mon_th = @Mon_th,Dat = @Dat,Emp_ID = @Emp_ID WHERE ID = @ID";
Cmd = new SqlCommand(Save, DB.Con);
Cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(dgvRow.Cells[2].Value));
}
Cmd.Parameters.AddWithValue("@Nam", dgvRow.Cells[3].Value).DbType = DbType.Int32;
Cmd.Parameters.AddWithValue("@Of_Month", dgvRow.Cells[4].Value).DbType = DbType.Int32;// دا حقل عدد لشهور المطلوب اضافتها على التاريخ
Cmd.Parameters.AddWithValue("@Days", dgvRow.Cells[5].Value).DbType = DbType.Int32;
Cmd.Parameters.AddWithValue("@Number", dgvRow.Cells[6].Value).DbType = DbType.Int32;
Cmd.Parameters.AddWithValue("@Start", dgvRow.Cells[7].Value).DbType = DbType.Date;// هذا الحقل به تاريخ البدايه الذي يتم العمل عليه
Cmd.Parameters.AddWithValue("@Fin", dgvRow.Cells[8].Value).DbType = DbType.Date;// هذا الحقل الذي يظهر به الناتج
Cmd.Parameters.AddWithValue("@Totl", dgvRow.Cells[9].Value).DbType = DbType.Decimal;
Cmd.Parameters.AddWithValue("@Mon_th", dgvRow.Cells[10].Value).DbType = DbType.Decimal;
Cmd.Parameters.AddWithValue("@Dat", DateTime.Now.ToString("dd/MM/yyyy"));
Cmd.Parameters.AddWithValue("@Emp_ID", Txt_Emp_ID.Text.ToString());
DB.open(); Cmd.ExecuteNonQuery(); DB.close();
}
}