当表单某列,若不填写时,会报错的问题,如何修改优化;

请教个问题,我开发的表单中,"工时"那一列,数据库里面,设置的数据类型为decimal,当新增数据,在工时那一列,什么也不填写时,会提示如下的错误;

我现在想实现,当什么不填写时,默认是0,请问这个代码要如何写,与工时有关的代码块如下,前两块,我分别截取的与它有关的代码,最后一块是datagridveiw中,与这有关的完整代码,请指导;

img

img


```c#

                dataGridView1.Columns[1].HeaderText = "日期";
                dataGridView1.Columns[2].HeaderText = "车间";
                dataGridView1.Columns[3].HeaderText = "班组";
                dataGridView1.Columns[4].HeaderText = "班次";
                dataGridView1.Columns[5].HeaderText = "工序";
                dataGridView1.Columns[6].HeaderText = "批号";
                dataGridView1.Columns[7].HeaderText = "产品批号";
                dataGridView1.Columns[8].HeaderText = "产品名称";
                dataGridView1.Columns[9].HeaderText = "规格";
                dataGridView1.Columns[10].HeaderText = "单位";
                dataGridView1.Columns[11].HeaderText = "当日产量";
                dataGridView1.Columns[12].HeaderText = "累积产量";
                dataGridView1.Columns[13].HeaderText = "完工状态";
                dataGridView1.Columns[14].HeaderText = "人数";
                dataGridView1.Columns[15].HeaderText = "工时";
                dataGridView1.Columns[16].HeaderText = "备注";

 else if (dr.RowState == System.Data.DataRowState.Added)  //增加操作;
                    {
                       strsql = @"INSERT INTO [dbo].[w_prohourcount]
                       ([date],[workshop],[teams],[banci],[process],[batchNo],[probatchNo],[proname],[spec],[unit],[daypro],[sumpro],[state],[pax],[ulh],[note])                                         
                       
                      values  
                       ('" + Convert.ToDateTime(dr["date"].ToString()) + @"'                       
                        ,'" + dr["workshop"].ToString() + @"' 
                        ,'" + dr["teams"].ToString() + @"'  
                        ,'" + dr["banci"].ToString() + @"'                      
                        ,'" + dr["process"].ToString() + @"'
                        ,'" + dr["batchNo"].ToString() + @"'
                        ,'" + dr["probatchNo"].ToString() + @"'
                        ,'" + dr["proname"].ToString() + @"'
                        ,'" + dr["spec"].ToString() + @"'
                        ,'" + dr["unit"].ToString() + @"'
                        ,'" + dr["daypro"].ToString() + @"'
                        ,'" + dr["sumpro"].ToString() + @"'
                        ,'" + dr["state"].ToString() + @"'
                        ,'" + dr["pax"].ToString() + @"'
                        ,'" + dr["ulh"].ToString() + @"'
                        ,'" + dr["note"].ToString() + @"')";  
                    }
  private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            decimal ulh;
            
            if (dataGridView1.Rows[e.RowIndex].Cells[15].Value == DBNull.Value)
            {
                ulh = 0;
            }

            else
            {
                ulh = Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[15].Value);
            }
        }


                        ,'" + dr["state"].ToString() + @"'
                        ,'" + dr["pax"].ToString() + @"'
                        ,'" + (dr["ulh"].ToString() == "" ? "0" : dr["ulh"].ToString()) + @"'
                        ,'" + dr["note"].ToString() + @"')"; 


没有复杂运算的情况下用float 或double就可以了,没必要一定用decimal 。