峰峦@叠嶂 2023-06-06 19:06 采纳率: 95.9%
浏览 7
已结题

导入和修改的按钮语句有问题,请帮助解决;

请教问题,我写的保存按钮的代码事件,如下,若是导入,导入表格的数据,点保存后,将导入结果保存到数据库;
反之就是修改,保存后,保存修改结果到数据库,但像如下我的代码这样,若是先导入,点保存后,再修改,就成了反复一遍遍的导入了,而到不了下面的修改语句中了,请问怎么解决;


```c#
 if (this.comboBox1.SelectedIndex == 1)
            {
                conn = new SqlConnection("server=192.168.100.247;database=Whmesinfo;user=sa;password=whyy@2021");

                conn.Open();

                try
                {
                    if (log == true)
                    {


                        System.Data.DataTable dt = new System.Data.DataTable();

                        System.Data.DataTable dtTemp = dtTempImport;     //导入的模板                   

                        for (int i = 0; i < dtTemp.Rows.Count; i++)
                        {
                            if (i == 0)
                                continue;

                            string strsql = @"INSERT INTO [dbo].[w_Qctablew]
                   ([sampledate],[reportdate],[productname],[batchNo],[reportNo],[process],[AIT],[MOULD],[ECO],[GNB],[SE],[result],[note])                                         
 
                  values  
                   (@sampledate,@reportdate, @productname, @batchNo, @reportNo, @process, @AIT, @MOULD, @ECO, @GNB, @SE,@result, @note)";
                            SqlCommand comm = new SqlCommand(strsql, conn);
                            comm.Parameters.AddWithValue("@sampledate", dtTemp.Rows[i]["F1"]);
                            comm.Parameters.AddWithValue("@reportdate", dtTemp.Rows[i]["F2"]);
                            comm.Parameters.AddWithValue("@productname", dtTemp.Rows[i]["F3"]);
                            comm.Parameters.AddWithValue("@batchNo", dtTemp.Rows[i]["F4"]);
                            comm.Parameters.AddWithValue("@reportNo", dtTemp.Rows[i]["F5"]);
                            comm.Parameters.AddWithValue("@process", dtTemp.Rows[i]["F6"]);
                            comm.Parameters.AddWithValue("@AIT", dtTemp.Rows[i]["F7"]);
                            comm.Parameters.AddWithValue("@MOULD", dtTemp.Rows[i]["F8"]);
                            comm.Parameters.AddWithValue("@ECO", dtTemp.Rows[i]["F9"]);
                            comm.Parameters.AddWithValue("@GNB", dtTemp.Rows[i]["F10"]);
                            comm.Parameters.AddWithValue("@SE", dtTemp.Rows[i]["F11"]);
                            comm.Parameters.AddWithValue("@result", dtTemp.Rows[i]["F12"]);
                            comm.Parameters.AddWithValue("@note", dtTemp.Rows[i]["F13"]);


                            comm.ExecuteNonQuery();

                            SqlCommand cmd = new SqlCommand(SqlString, conn);

                            SqlDataAdapter sda = new SqlDataAdapter(cmd);

                        }
                        MessageBox.Show("导入成功");
                    }

                    if (log == false)
                    {
                        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_Qctablew] 
                     SET [sampledate] = '" + Convert.ToDateTime(dr["sampledate"]) + @"'
                     ,[reportdate] = '" + Convert.ToDateTime(dr["reportdate"]) + @"'                  
                     ,[productname] = '" + dr["productname"].ToString() + @"'
                     ,[batchNo] = '" + dr["batchNo"].ToString() + @"'
                     ,[reportNo] = '" + dr["reportNo"].ToString() + @"'
                     ,[process] = '" + dr["process"].ToString() + @"'
                     ,[AIT] = '" + dr["AIT"].ToString() + @"'
                     ,[MOULD] = '" + dr["MOULD"].ToString() + @"'
                     ,[ECO] = '" + dr["ECO"].ToString() + @"'
                     ,[GNB] = '" + dr["GNB"].ToString() + @"'
                     ,[SE] = '" + dr["SE"].ToString() + @"'                    
                     ,[result] = '" + dr["result"].ToString() + @"'
                     ,[note] = '" + dr["note"].ToString() + @"'                                       

                     where id = '" + dr["id"].ToString() + "'";

                            }

                            else if (dr.RowState == System.Data.DataRowState.Added)//增加操作
                            {
                                strsql = @"INSERT INTO [dbo].[w_Qctablew]
                       ([sampledate],[reportdate],[productname],[batchNo],[reportNo],[process],[AIT],[MOULD],[ECO],[GNB],[SE],[result],[note])                                         
                       
                      values  
                       ('" + Convert.ToDateTime(dr["sampledate"].ToString()) + @"'
                        ,'" + Convert.ToDateTime(dr["reportdate"].ToString()) + @"'                       
                        ,'" + dr["productname"].ToString() + @"'
                        ,'" + dr["batchNo"].ToString() + @"'
                        ,'" + dr["reportNo"].ToString() + @"'
                        ,'" + dr["process"].ToString() + @"'
                        ,'" + dr["AIT"].ToString() + @"'
                        ,'" + dr["MOULD"].ToString() + @"'
                        ,'" + dr["ECO"].ToString() + @"'
                        ,'" + dr["GNB"].ToString() + @"'
                        ,'" + dr["SE"].ToString() + @"'                        
                        ,'" + dr["result"].ToString() + @"'
                        ,'" + dr["note"].ToString() + @"')";

                            }


                            SqlCommand comm = new SqlCommand(strsql, conn);

                            comm.ExecuteNonQuery();
                        }

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

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    MessageBox.Show("请输入修改内容后,再点保存");
                }
                finally
                {
                    conn.Close();
                }
            }

```

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-06-07 13:59
    关注

    你的代码逻辑有问题,导致了你所描述的问题。你需要在导入和修改的操作之间加入逻辑判断,以避免多次导入的问题。

    具体来说,你可以在导入操作之后设置一个变量,表示已经进行了导入操作。然后在保存操作之前,判断这个变量的值,如果已经进行了导入操作,就执行修改操作,否则提示用户进行导入操作。

    下面是一个示例代码,演示了如何根据导入和修改的状态来执行保存操作:

    if (this.comboBox1.SelectedIndex == 1)
    {
        // 若已经进行了导入操作,则执行修改操作
        if (log == true)
        {
            // 执行修改操作的代码...
            MessageBox.Show("修改成功");
        }
        // 否则提示用户进行导入操作
        else
        {
            MessageBox.Show("请先导入数据");
            return;
        }
    }
    else
    {
        // 执行导入操作的代码...
        MessageBox.Show("导入成功");
    }
    

    在上面的示例代码中,我们首先判断当前操作是导入还是修改,如果是导入,就判断是否已经进行了导入操作,如果已经进行了导入操作,则执行修改操作;否则提示用户进行导入操作。如果当前操作是修改,则直接执行修改操作。

    需要注意的是,上面的代码仅是示例,你需要根据你的实际情况进行修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月6日

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思