增加没有日期项,需要录入的提示

请问一下,我制作了一个窗体,让员工录入生产信息,其中日期是必填项,但若不填写,点击修改保存时,程序会有报错提示,这个按钮的代码如下,请问如何加个提示,若不填写,能提示录入人员,要录入日期项呢;

img

img


```c#
 private void btnmodify_Click(object sender, EventArgs e)
        {
            conn = new SqlConnection("server =192.168.100.247;database = Whmesinfo; user = sa;password = whyy@2021");

            conn.Open();

            try
            {
                DataTable changedt = dt.GetChanges(); //将发生变化的内容,存储在另一个表内; 

                foreach(DataRow dr in changedt.Rows)
                {
                    string strsql = string.Empty;                  

                    if (dr.RowState == System.Data.DataRowState.Modified)   //修改操作;
                    {
                      strsql = @"UPDATE [dbo].[w_prohourcount] 
                     SET [date] = '" + Convert.ToDateTime(dr["date"]) + @"' 
                      ,[workshop] = '" + dr["workshop"].ToString() + @"'
                      ,[teams] = '" + dr["teams"].ToString() + @"'                      
                      ,[banci] = '" + dr["banci"].ToString() + @"'                 
                     ,[process] = '" + dr["process"].ToString() + @"'
                     ,[batchNo] = '" + dr["batchNo"].ToString() + @"'
                     ,[probatchNo] = '" + dr["probatchNo"].ToString() + @"'                                         
                     ,[proname] = '" + dr["proname"].ToString() + @"' 
                     ,[spec] = '" + dr["spec"].ToString() + @"' 
                     ,[unit] = '" + dr["unit"].ToString() + @"' 
                     ,[daypro] = '" + dr["daypro"].ToString() + @"'
                     ,[sumpro] = '" + dr["sumpro"].ToString() + @"'
                     ,[state] = '" + dr["state"].ToString() + @"'
                     ,[pax] = '" + dr["pax"].ToString() + @"'
                     ,[ulh] = '" + dr["ulh"].ToString() + @"'
                     ,[note] = '" + dr["note"].ToString() + @"'                                                         
                     where id = '" + dr["id"].ToString() + "'";
                    }

                    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() == "" ? "0" : dr["ulh"].ToString()) + @"'
                        ,'" + dr["note"].ToString() + @"')";  
                    }

                    SqlCommand comm = new SqlCommand(strsql,conn);

                    comm.ExecuteNonQuery();
                }
              
                MessageBox.Show("更新成功");

            }
            catch (Exception ex)
            {
                throw;               
                MessageBox.Show("请输入更新内容");
            }
            
            finally { conn.Close(); }
        }

```

你如果做这样的校验的话,那你的代码就写得有问题。不能上来就直接操作数据库,要先做数据完整性check,逐行遍历数据,然后弹窗或者别的方式报错

你这代码呀
耦合度太高了
按钮事件里不要直接写逻辑
单独写一个save函数,用来连接数据库,执行insert
再写一个函数,用来判断各个文本框里的值是不是合法的值
按钮事件里按顺序调用这个两个函数,判断第一个函数的返回值是true再继续执行第二个函数

源于chatGPT仅供参考

要在按钮点击事件中加入日期必填的提示,可以使用条件判断来检查日期是否为空。如果日期为空,则弹出提示框告知录入人员需要填写日期项。

以下是修改后的代码示例:

```c#
private void btnmodify_Click(object sender, EventArgs e)
{
    conn = new SqlConnection("server =192.168.100.247;database = Whmesinfo; user = sa;password = whyy@2021");

    conn.Open();

    try
    {
        DataTable changedt = dt.GetChanges(); //将发生变化的内容,存储在另一个表内; 

        foreach (DataRow dr in changedt.Rows)
        {
            string strsql = string.Empty;

            if (dr.RowState == System.Data.DataRowState.Modified)   //修改操作;
            {
                // 省略其他代码...

                if (string.IsNullOrEmpty(dr["date"].ToString()))  // 检查日期是否为空
                {
                    MessageBox.Show("请输入日期");
                    return;  // 返回,不继续执行保存操作
                }

                // 省略其他代码...
            }
            
            // 省略其他代码...
        }

        MessageBox.Show("更新成功");
    }
    catch (Exception ex)
    {
        MessageBox.Show("请输入更新内容");
    }
    finally
    {
        conn.Close();
    }
}

在上述代码中,我们添加了一个条件判断来检查日期是否为空。如果日期为空,就会弹出提示框,并使用return语句提前结束保存操作,确保不会执行数据库操作。

```